Changeset 74176 in vbox for trunk/src/VBox/Runtime/testcase
- Timestamp:
- Sep 10, 2018 9:44:58 AM (6 years ago)
- svn:sync-xref-src-repo-rev:
- 124949
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Runtime/testcase/tstRTCRest-1.cpp
r74170 r74176 855 855 856 856 857 void testString(const char *pszDummy, ...) 858 { 859 RTTestSub(g_hTest, "RTCRestString"); 860 861 { 862 RTCRestString obj1; 863 RTTESTI_CHECK(obj1.isEmpty()); 864 RTTESTI_CHECK(obj1.isNull() == false); 865 RTTESTI_CHECK(strcmp(obj1.typeName(), "RTCString") == 0); 866 RTTESTI_CHECK(obj1.typeClass() == RTCRestObjectBase::kTypeClass_String); 867 } 868 869 { 870 RTCRestString obj2(RTCString("2398.1")); 871 RTTESTI_CHECK(obj2 == "2398.1"); 872 RTTESTI_CHECK(obj2.isNull() == false); 873 } 874 875 { 876 RTCRestString obj2("-7345.2"); 877 RTTESTI_CHECK(obj2 == "-7345.2"); 878 RTTESTI_CHECK(obj2.isNull() == false); 879 } 880 881 { 882 /* Value assignments: */ 883 RTCRestString obj3; 884 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 885 RTTESTI_CHECK(obj3.isNull() == true); 886 RTTESTI_CHECK(obj3.isEmpty()); 887 obj3 = "-1.0"; 888 RTTESTI_CHECK(obj3 == "-1.0"); 889 RTTESTI_CHECK(obj3.isNull() == false); 890 891 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 892 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 893 obj3 = RTCString("-2.0"); 894 RTTESTI_CHECK(obj3 == "-2.0"); 895 RTTESTI_CHECK(obj3.isNull() == false); 896 897 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 898 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 899 obj3 = RTCRestString("-3.0"); 900 RTTESTI_CHECK(obj3 == "-3.0"); 901 RTTESTI_CHECK(obj3.isNull() == false); 902 903 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 904 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 905 RTTESTI_CHECK_RC(obj3.assignNoThrow(RTCRestString("4.0")), VINF_SUCCESS); 906 RTTESTI_CHECK(obj3 == "4.0"); 907 RTTESTI_CHECK(obj3.isNull() == false); 908 909 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 910 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 911 RTTESTI_CHECK_RC(obj3.assignNoThrow("-4.0"), VINF_SUCCESS); 912 RTTESTI_CHECK(obj3 == "-4.0"); 913 RTTESTI_CHECK(obj3.isNull() == false); 914 915 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 916 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 917 RTTESTI_CHECK_RC(obj3.assignNoThrow(RTCRestString("0123456789"), 3, 5), VINF_SUCCESS); 918 RTTESTI_CHECK(obj3 == "34567"); 919 RTTESTI_CHECK(obj3.isNull() == false); 920 921 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 922 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 923 RTTESTI_CHECK_RC(obj3.assignNoThrow("0123456789", 4), VINF_SUCCESS); 924 RTTESTI_CHECK(obj3 == "0123"); 925 RTTESTI_CHECK(obj3.isNull() == false); 926 927 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 928 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 929 RTTESTI_CHECK_RC(obj3.assignNoThrow(8, 'x'), VINF_SUCCESS); 930 RTTESTI_CHECK(obj3 == "xxxxxxxx"); 931 RTTESTI_CHECK(obj3.isNull() == false); 932 933 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 934 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 935 RTTESTI_CHECK_RC(obj3.printfNoThrow("%d%s%d", 42, "asdf", 22), VINF_SUCCESS); 936 RTTESTI_CHECK(obj3 == "42asdf22"); 937 RTTESTI_CHECK(obj3.isNull() == false); 938 939 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 940 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 941 va_list va; 942 va_start(va, pszDummy); 943 RTTESTI_CHECK_RC(obj3.printfVNoThrow("asdf", va), VINF_SUCCESS); 944 va_end(va); 945 RTTESTI_CHECK(obj3 == "asdf"); 946 RTTESTI_CHECK(obj3.isNull() == false); 947 948 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 949 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 950 obj3.assign(RTCRestString("4.0")); 951 RTTESTI_CHECK(obj3 == "4.0"); 952 RTTESTI_CHECK(obj3.isNull() == false); 953 954 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 955 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 956 obj3.assign("-4.0"); 957 RTTESTI_CHECK(obj3 == "-4.0"); 958 RTTESTI_CHECK(obj3.isNull() == false); 959 960 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 961 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 962 obj3.assign(RTCRestString("0123456789"), 3, 5); 963 RTTESTI_CHECK(obj3 == "34567"); 964 RTTESTI_CHECK(obj3.isNull() == false); 965 966 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 967 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 968 obj3.assign("0123456789", 4); 969 RTTESTI_CHECK(obj3 == "0123"); 970 RTTESTI_CHECK(obj3.isNull() == false); 971 972 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 973 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 974 obj3.assign(8, 'x'); 975 RTTESTI_CHECK(obj3 == "xxxxxxxx"); 976 RTTESTI_CHECK(obj3.isNull() == false); 977 978 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 979 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 980 obj3.printf("%d%s%d", 42, "asdf", 22); 981 RTTESTI_CHECK(obj3 == "42asdf22"); 982 RTTESTI_CHECK(obj3.isNull() == false); 983 984 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 985 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 986 va_start(va, pszDummy); 987 obj3.printfV("asdf", va); 988 va_end(va); 989 RTTESTI_CHECK(obj3 == "asdf"); 990 RTTESTI_CHECK(obj3.isNull() == false); 991 992 /* Copy assignments: */ 993 RTCRestString const obj3Max("max"); 994 RTTESTI_CHECK(obj3Max == "max"); 995 RTTESTI_CHECK(obj3Max.isNull() == false); 996 RTCRestString obj3Null; 997 obj3Null.setNull(); 998 RTTESTI_CHECK(obj3Null.isEmpty()); 999 RTTESTI_CHECK(obj3Null.isNull() == true); 1000 RTCRestString obj3Empty; 1001 RTTESTI_CHECK(obj3Empty.isEmpty()); 1002 RTTESTI_CHECK(obj3Empty.isNull() == false); 1003 1004 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 1005 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 1006 RTTESTI_CHECK_RC(obj3.assignCopy(obj3Max), VINF_SUCCESS); 1007 RTTESTI_CHECK(obj3 == "max"); 1008 RTTESTI_CHECK(obj3.isNull() == false); 1009 1010 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 1011 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 1012 RTTESTI_CHECK_RC(obj3.assignCopy(obj3Null), VINF_SUCCESS); 1013 RTTESTI_CHECK(obj3.isEmpty()); 1014 RTTESTI_CHECK(obj3.isNull() == true); 1015 1016 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 1017 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 1018 RTTESTI_CHECK_RC(obj3.assignCopy(obj3Empty), VINF_SUCCESS); 1019 RTTESTI_CHECK(obj3 == ""); 1020 RTTESTI_CHECK(obj3.isEmpty()); 1021 RTTESTI_CHECK(obj3.isNull() == false); 1022 1023 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 1024 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 1025 RTTESTI_CHECK_RC(obj3.assignCopy(RTCString("11.0")), VINF_SUCCESS); 1026 RTTESTI_CHECK(obj3 == "11.0"); 1027 RTTESTI_CHECK(obj3.isNull() == false); 1028 1029 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 1030 RTTESTI_CHECK(obj3.isNull() == true && obj3.isEmpty()); 1031 RTTESTI_CHECK_RC(obj3.assignCopy("12.0"), VINF_SUCCESS); 1032 RTTESTI_CHECK(obj3 == "12.0"); 1033 RTTESTI_CHECK(obj3.isNull() == false); 1034 1035 /* setNull implies resetToDefault: */ 1036 obj3 = obj3Max; 1037 RTTESTI_CHECK(obj3 == "max"); 1038 RTTESTI_CHECK(obj3.isNull() == false); 1039 RTTESTI_CHECK_RC(obj3.setNull(), VINF_SUCCESS); 1040 RTTESTI_CHECK(obj3.isNull() == true); 1041 RTTESTI_CHECK(obj3.isEmpty()); 1042 1043 /* Copy constructors: */ 1044 { 1045 RTCRestString obj3a(obj3Max); 1046 RTTESTI_CHECK(obj3a == "max"); 1047 RTTESTI_CHECK(obj3a.isNull() == false); 1048 } 1049 { 1050 RTCRestString const obj3c(obj3Null); 1051 RTTESTI_CHECK(obj3c.isEmpty()); 1052 RTTESTI_CHECK(obj3c.isNull() == true); 1053 } 1054 1055 /* Serialization to json: */ 1056 const char *pszJson = toJson(&obj3Max); 1057 RTTESTI_CHECK_MSG(strcmp(pszJson, "\"max\"") == 0, ("pszJson=%s\n", pszJson)); 1058 pszJson = toJson(&obj3Null); 1059 RTTESTI_CHECK_MSG(strcmp(pszJson, "null") == 0, ("pszJson=%s\n", pszJson)); 1060 pszJson = toJson(&obj3Empty); 1061 RTTESTI_CHECK_MSG(strcmp(pszJson, "\"\"") == 0, ("pszJson=%s\n", pszJson)); 1062 1063 /* Serialization to string. */ 1064 RTCString str; 1065 RTCString strExpect; 1066 str = "lead-in:"; 1067 RTTESTI_CHECK_RC(obj3Max.toString(&str, RTCRestObjectBase::kToString_Append), VINF_SUCCESS); 1068 RTTESTI_CHECK_MSG(str.equals("lead-in:max"), ("str=%s\n", str.c_str())); 1069 RTTESTI_CHECK_RC(obj3Max.toString(&str), VINF_SUCCESS); 1070 RTTESTI_CHECK_MSG(str.equals("max"), ("str=%s\n", str.c_str())); 1071 1072 str = "lead-in:"; 1073 RTTESTI_CHECK_RC(obj3Empty.toString(&str, RTCRestObjectBase::kToString_Append), VINF_SUCCESS); 1074 RTTESTI_CHECK_MSG(str.equals("lead-in:"), ("str=%s\n", str.c_str())); 1075 RTTESTI_CHECK_RC(obj3Empty.toString(&str), VINF_SUCCESS); 1076 RTTESTI_CHECK_MSG(str.equals(""), ("str=%s\n", str.c_str())); 1077 1078 str = "lead-in:"; 1079 RTTESTI_CHECK_RC(obj3Null.toString(&str, RTCRestObjectBase::kToString_Append), VINF_SUCCESS); 1080 RTTESTI_CHECK_MSG(str.equals("lead-in:"), ("str=%s\n", str.c_str())); 1081 RTTESTI_CHECK_RC(obj3Null.toString(&str), VINF_SUCCESS); 1082 RTTESTI_CHECK_MSG(str.equals(""), ("str=%s\n", str.c_str())); 1083 } 1084 1085 /* deserialize: */ 1086 RTERRINFOSTATIC ErrInfo; 1087 { 1088 /* from json: */ 1089 RTCRestString obj4; 1090 obj4.setNull(); 1091 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "\"42.42\"", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1092 RTTESTI_CHECK(obj4 == "42.42"); 1093 RTTESTI_CHECK(obj4.isNull() == false); 1094 1095 obj4.setNull(); 1096 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "\"-22.22\"", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1097 RTTESTI_CHECK(obj4 == "-22.22"); 1098 RTTESTI_CHECK(obj4.isNull() == false); 1099 1100 obj4.setNull(); 1101 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "\"maximum\"", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1102 RTTESTI_CHECK(obj4 == "maximum"); 1103 RTTESTI_CHECK(obj4.isNull() == false); 1104 1105 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "null", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1106 RTTESTI_CHECK(obj4.isEmpty()); 1107 RTTESTI_CHECK(obj4.isNull() == true); 1108 1109 obj4.setNull(); 1110 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "\"\\u0020\"", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1111 RTTESTI_CHECK(obj4 == " "); 1112 RTTESTI_CHECK(obj4.isNull() == false); 1113 1114 obj4.setNull(); 1115 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "\"\\u004f\\u004D\\u0047\\u0021 :-)\"", 1116 &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1117 RTTESTI_CHECK(obj4 == "OMG! :-)"); 1118 RTTESTI_CHECK(obj4.isNull() == false); 1119 1120 /* object goes to default state on failure: */ 1121 obj4 = "asdf"; 1122 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "false", &ErrInfo, RT_XSTR(__LINE__)), VERR_REST_WRONG_JSON_TYPE_FOR_STRING); 1123 RTTESTI_CHECK(obj4.isEmpty()); 1124 RTTESTI_CHECK(obj4.isNull() == false); 1125 RTTESTI_CHECK(RTErrInfoIsSet(&ErrInfo.Core)); 1126 1127 obj4 = "asdf"; 1128 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "1", &ErrInfo, RT_XSTR(__LINE__)), VERR_REST_WRONG_JSON_TYPE_FOR_STRING); 1129 RTTESTI_CHECK(obj4.isEmpty()); 1130 RTTESTI_CHECK(obj4.isNull() == false); 1131 RTTESTI_CHECK(RTErrInfoIsSet(&ErrInfo.Core)); 1132 1133 obj4.setNull(); 1134 RTTESTI_CHECK_RC(deserializeFromJson(&obj4, "[ null ]", NULL, RT_XSTR(__LINE__)), VERR_REST_WRONG_JSON_TYPE_FOR_STRING); 1135 RTTESTI_CHECK(obj4.isEmpty()); 1136 RTTESTI_CHECK(obj4.isNull() == false); 1137 1138 /* from string: */ 1139 obj4.setNull(); 1140 RTTESTI_CHECK_RC(fromString(&obj4, "22.42", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1141 RTTESTI_CHECK(obj4 == "22.42"); 1142 RTTESTI_CHECK(obj4.isNull() == false); 1143 1144 RTTESTI_CHECK_RC(fromString(&obj4, "-42.22", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1145 RTTESTI_CHECK(obj4 == "-42.22"); 1146 RTTESTI_CHECK(obj4.isNull() == false); 1147 1148 obj4.setNull(); 1149 RTTESTI_CHECK_RC(fromString(&obj4, "null", &ErrInfo, RT_XSTR(__LINE__)), VINF_SUCCESS); 1150 RTTESTI_CHECK(obj4 == "null"); 1151 RTTESTI_CHECK(obj4.isNull() == false); 1152 } 1153 } 1154 1155 857 1156 int main() 858 1157 { … … 865 1164 testInteger<RTCRestInt16, int16_t, Int16Constants>(); 866 1165 testDouble(); 867 1166 testString("dummy", 1, 2); 868 1167 869 1168 rcExit = RTTestSummaryAndDestroy(g_hTest);
Note:
See TracChangeset
for help on using the changeset viewer.