From a6b697ca13945a174cff9f3e9b1af1cf61c0bea5 Mon Sep 17 00:00:00 2001 From: Thiago Macieira Date: Tue, 12 Dec 2017 18:32:19 -0800 Subject: Create corelib/serialization and move existing file formats into it This is in preparation to adding CBOR support. We don't need yet another dir for CBOR and placing it in src/corelib/json is just wrong. Change-Id: I9741f017961b410c910dfffd14ffb9d870340fa6 Reviewed-by: Oswald Buddenhagen Reviewed-by: Lars Knoll --- tests/auto/corelib/io/io.pro | 6 +- tests/auto/corelib/io/qdatastream/.gitignore | 2 - tests/auto/corelib/io/qdatastream/datastream.q42 | Bin 668 -> 0 bytes tests/auto/corelib/io/qdatastream/qdatastream.pro | 11 - tests/auto/corelib/io/qdatastream/testdata.qrc | 5 - .../corelib/io/qdatastream/tst_qdatastream.cpp | 3484 ----- tests/auto/corelib/io/qtextstream/.gitattributes | 3 - tests/auto/corelib/io/qtextstream/.gitignore | 11 - tests/auto/corelib/io/qtextstream/BLACKLIST | 3 - tests/auto/corelib/io/qtextstream/qtextstream.pro | 2 - tests/auto/corelib/io/qtextstream/qtextstream.qrc | 6 - .../io/qtextstream/readAllStdinProcess/main.cpp | 37 - .../readAllStdinProcess/readAllStdinProcess.pro | 9 - .../io/qtextstream/readLineStdinProcess/main.cpp | 47 - .../readLineStdinProcess/readLineStdinProcess.pro | 9 - ...perator_shift_QByteArray_resource_Latin1_0.data | 0 ...perator_shift_QByteArray_resource_Latin1_1.data | 0 ...perator_shift_QByteArray_resource_Latin1_2.data | 1 - ...perator_shift_QByteArray_resource_Latin1_3.data | 2 - ...perator_shift_QByteArray_resource_Latin1_4.data | 1 - ...perator_shift_QByteArray_resource_Locale_0.data | 0 ...perator_shift_QByteArray_resource_Locale_1.data | 0 ...perator_shift_QByteArray_resource_Locale_2.data | 1 - ...perator_shift_QByteArray_resource_Locale_3.data | 2 - ...perator_shift_QByteArray_resource_Locale_4.data | 1 - ...tor_shift_QByteArray_resource_RawUnicode_0.data | 0 ...tor_shift_QByteArray_resource_RawUnicode_1.data | 0 ...tor_shift_QByteArray_resource_RawUnicode_2.data | Bin 6 -> 0 bytes ...tor_shift_QByteArray_resource_RawUnicode_3.data | Bin 14 -> 0 bytes ...tor_shift_QByteArray_resource_RawUnicode_4.data | Bin 116 -> 0 bytes ..._QByteArray_resource_UnicodeNetworkOrder_0.data | 1 - ..._QByteArray_resource_UnicodeNetworkOrder_1.data | 1 - ..._QByteArray_resource_UnicodeNetworkOrder_2.data | Bin 8 -> 0 bytes ..._QByteArray_resource_UnicodeNetworkOrder_3.data | Bin 16 -> 0 bytes ..._QByteArray_resource_UnicodeNetworkOrder_4.data | Bin 118 -> 0 bytes ...shift_QByteArray_resource_UnicodeReverse_0.data | 1 - ...shift_QByteArray_resource_UnicodeReverse_1.data | 1 - ...shift_QByteArray_resource_UnicodeReverse_2.data | Bin 8 -> 0 bytes ...shift_QByteArray_resource_UnicodeReverse_3.data | Bin 16 -> 0 bytes ...shift_QByteArray_resource_UnicodeReverse_4.data | Bin 118 -> 0 bytes ...or_shift_QByteArray_resource_UnicodeUTF8_0.data | 0 ...or_shift_QByteArray_resource_UnicodeUTF8_1.data | 0 ...or_shift_QByteArray_resource_UnicodeUTF8_2.data | 1 - ...or_shift_QByteArray_resource_UnicodeUTF8_3.data | 2 - ...or_shift_QByteArray_resource_UnicodeUTF8_4.data | 1 - ...erator_shift_QByteArray_resource_Unicode_0.data | 1 - ...erator_shift_QByteArray_resource_Unicode_1.data | 1 - ...erator_shift_QByteArray_resource_Unicode_2.data | Bin 8 -> 0 bytes ...erator_shift_QByteArray_resource_Unicode_3.data | Bin 16 -> 0 bytes ...erator_shift_QByteArray_resource_Unicode_4.data | Bin 118 -> 0 bytes .../operator_shift_QChar_resource_Latin1_0.data | 1 - .../operator_shift_QChar_resource_Latin1_1.data | 1 - .../operator_shift_QChar_resource_Latin1_2.data | 1 - .../operator_shift_QChar_resource_Latin1_3.data | 1 - .../operator_shift_QChar_resource_Latin1_4.data | 1 - .../operator_shift_QChar_resource_Locale_0.data | 1 - .../operator_shift_QChar_resource_Locale_1.data | 1 - .../operator_shift_QChar_resource_Locale_2.data | 1 - .../operator_shift_QChar_resource_Locale_3.data | 1 - .../operator_shift_QChar_resource_Locale_4.data | 1 - ...operator_shift_QChar_resource_RawUnicode_0.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_1.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_2.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_3.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_4.data | Bin 2 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_0.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_1.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_2.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_3.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_4.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_0.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_1.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_2.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_3.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_4.data | Bin 4 -> 0 bytes ...perator_shift_QChar_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_QChar_resource_Unicode_0.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_1.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_2.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_3.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_4.data | Bin 4 -> 0 bytes .../operator_shift_QString_resource_Latin1_0.data | 0 .../operator_shift_QString_resource_Latin1_1.data | 0 .../operator_shift_QString_resource_Latin1_2.data | 1 - .../operator_shift_QString_resource_Latin1_3.data | 2 - .../operator_shift_QString_resource_Latin1_4.data | 1 - .../operator_shift_QString_resource_Locale_0.data | 0 .../operator_shift_QString_resource_Locale_1.data | 0 .../operator_shift_QString_resource_Locale_2.data | 1 - .../operator_shift_QString_resource_Locale_3.data | 2 - .../operator_shift_QString_resource_Locale_4.data | 1 - ...erator_shift_QString_resource_RawUnicode_0.data | 0 ...erator_shift_QString_resource_RawUnicode_1.data | 0 ...erator_shift_QString_resource_RawUnicode_2.data | Bin 6 -> 0 bytes ...erator_shift_QString_resource_RawUnicode_3.data | Bin 14 -> 0 bytes ...erator_shift_QString_resource_RawUnicode_4.data | Bin 116 -> 0 bytes ...ift_QString_resource_UnicodeNetworkOrder_0.data | 1 - ...ift_QString_resource_UnicodeNetworkOrder_1.data | 1 - ...ift_QString_resource_UnicodeNetworkOrder_2.data | Bin 8 -> 0 bytes ...ift_QString_resource_UnicodeNetworkOrder_3.data | Bin 16 -> 0 bytes ...ift_QString_resource_UnicodeNetworkOrder_4.data | Bin 118 -> 0 bytes ...or_shift_QString_resource_UnicodeReverse_0.data | 0 ...or_shift_QString_resource_UnicodeReverse_1.data | 0 ...or_shift_QString_resource_UnicodeReverse_2.data | Bin 8 -> 0 bytes ...or_shift_QString_resource_UnicodeReverse_3.data | Bin 16 -> 0 bytes ...or_shift_QString_resource_UnicodeReverse_4.data | Bin 118 -> 0 bytes ...rator_shift_QString_resource_UnicodeUTF8_0.data | 0 ...rator_shift_QString_resource_UnicodeUTF8_1.data | 0 ...rator_shift_QString_resource_UnicodeUTF8_2.data | 1 - ...rator_shift_QString_resource_UnicodeUTF8_3.data | 2 - ...rator_shift_QString_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_QString_resource_Unicode_0.data | 1 - .../operator_shift_QString_resource_Unicode_1.data | 1 - .../operator_shift_QString_resource_Unicode_2.data | Bin 8 -> 0 bytes .../operator_shift_QString_resource_Unicode_3.data | Bin 16 -> 0 bytes .../operator_shift_QString_resource_Unicode_4.data | Bin 118 -> 0 bytes .../operator_shift_char_resource_Latin1_0.data | 1 - .../operator_shift_char_resource_Latin1_1.data | 1 - .../operator_shift_char_resource_Latin1_2.data | 1 - .../operator_shift_char_resource_Latin1_3.data | 1 - .../operator_shift_char_resource_Latin1_4.data | 1 - .../operator_shift_char_resource_Locale_0.data | 1 - .../operator_shift_char_resource_Locale_1.data | 1 - .../operator_shift_char_resource_Locale_2.data | 1 - .../operator_shift_char_resource_Locale_3.data | 1 - .../operator_shift_char_resource_Locale_4.data | 1 - .../operator_shift_char_resource_RawUnicode_0.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_1.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_2.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_3.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_4.data | Bin 2 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_0.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_1.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_2.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_3.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_4.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_0.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_1.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_2.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_3.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_4.data | Bin 4 -> 0 bytes ...operator_shift_char_resource_UnicodeUTF8_0.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_1.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_2.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_3.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_char_resource_Unicode_0.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_1.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_2.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_3.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_4.data | Bin 4 -> 0 bytes .../operator_shift_double_resource_Latin1_0.data | 1 - .../operator_shift_double_resource_Latin1_1.data | 1 - .../operator_shift_double_resource_Latin1_2.data | 1 - .../operator_shift_double_resource_Latin1_3.data | 1 - .../operator_shift_double_resource_Latin1_4.data | 1 - .../operator_shift_double_resource_Latin1_5.data | 1 - .../operator_shift_double_resource_Latin1_6.data | 1 - .../operator_shift_double_resource_Locale_0.data | 1 - .../operator_shift_double_resource_Locale_1.data | 1 - .../operator_shift_double_resource_Locale_2.data | 1 - .../operator_shift_double_resource_Locale_3.data | 1 - .../operator_shift_double_resource_Locale_4.data | 1 - .../operator_shift_double_resource_Locale_5.data | 1 - .../operator_shift_double_resource_Locale_6.data | 1 - ...perator_shift_double_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...perator_shift_double_resource_RawUnicode_1.data | Bin 24 -> 0 bytes ...perator_shift_double_resource_RawUnicode_2.data | Bin 26 -> 0 bytes ...perator_shift_double_resource_RawUnicode_3.data | Bin 26 -> 0 bytes ...perator_shift_double_resource_RawUnicode_4.data | Bin 28 -> 0 bytes ...perator_shift_double_resource_RawUnicode_5.data | Bin 32 -> 0 bytes ...perator_shift_double_resource_RawUnicode_6.data | Bin 34 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_1.data | Bin 26 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_2.data | Bin 28 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_3.data | Bin 28 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_4.data | Bin 30 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_5.data | Bin 34 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_6.data | Bin 36 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_1.data | Bin 26 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_2.data | Bin 28 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_3.data | Bin 28 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_4.data | Bin 30 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_5.data | Bin 34 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_6.data | Bin 36 -> 0 bytes ...erator_shift_double_resource_UnicodeUTF8_0.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_1.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_2.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_3.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_4.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_5.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_6.data | 1 - .../operator_shift_double_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_double_resource_Unicode_1.data | Bin 26 -> 0 bytes .../operator_shift_double_resource_Unicode_2.data | Bin 28 -> 0 bytes .../operator_shift_double_resource_Unicode_3.data | Bin 28 -> 0 bytes .../operator_shift_double_resource_Unicode_4.data | Bin 30 -> 0 bytes .../operator_shift_double_resource_Unicode_5.data | Bin 34 -> 0 bytes .../operator_shift_double_resource_Unicode_6.data | Bin 36 -> 0 bytes .../operator_shift_float_resource_Latin1_0.data | 1 - .../operator_shift_float_resource_Latin1_1.data | 1 - .../operator_shift_float_resource_Latin1_2.data | 1 - .../operator_shift_float_resource_Latin1_3.data | 1 - .../operator_shift_float_resource_Latin1_4.data | 1 - .../operator_shift_float_resource_Locale_0.data | 1 - .../operator_shift_float_resource_Locale_1.data | 1 - .../operator_shift_float_resource_Locale_2.data | 1 - .../operator_shift_float_resource_Locale_3.data | 1 - .../operator_shift_float_resource_Locale_4.data | 1 - ...operator_shift_float_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...operator_shift_float_resource_RawUnicode_1.data | Bin 24 -> 0 bytes ...operator_shift_float_resource_RawUnicode_2.data | Bin 26 -> 0 bytes ...operator_shift_float_resource_RawUnicode_3.data | Bin 26 -> 0 bytes ...operator_shift_float_resource_RawUnicode_4.data | Bin 28 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_1.data | Bin 26 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_2.data | Bin 28 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_3.data | Bin 28 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_4.data | Bin 30 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_1.data | Bin 26 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_2.data | Bin 28 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_3.data | Bin 28 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_4.data | Bin 30 -> 0 bytes ...perator_shift_float_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_float_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_float_resource_Unicode_1.data | Bin 26 -> 0 bytes .../operator_shift_float_resource_Unicode_2.data | Bin 28 -> 0 bytes .../operator_shift_float_resource_Unicode_3.data | Bin 28 -> 0 bytes .../operator_shift_float_resource_Unicode_4.data | Bin 30 -> 0 bytes .../operator_shift_int_resource_Latin1_0.data | 1 - .../operator_shift_int_resource_Latin1_1.data | 1 - .../operator_shift_int_resource_Latin1_2.data | 1 - .../operator_shift_int_resource_Latin1_3.data | 1 - .../operator_shift_int_resource_Latin1_4.data | 1 - .../operator_shift_int_resource_Latin1_5.data | 1 - .../operator_shift_int_resource_Latin1_6.data | 1 - .../operator_shift_int_resource_Latin1_7.data | 1 - .../operator_shift_int_resource_Latin1_8.data | 1 - .../operator_shift_int_resource_Locale_0.data | 1 - .../operator_shift_int_resource_Locale_1.data | 1 - .../operator_shift_int_resource_Locale_2.data | 1 - .../operator_shift_int_resource_Locale_3.data | 1 - .../operator_shift_int_resource_Locale_4.data | 1 - .../operator_shift_int_resource_Locale_5.data | 1 - .../operator_shift_int_resource_Locale_6.data | 1 - .../operator_shift_int_resource_Locale_7.data | 1 - .../operator_shift_int_resource_Locale_8.data | 1 - .../operator_shift_int_resource_RawUnicode_0.data | Bin 14 -> 0 bytes .../operator_shift_int_resource_RawUnicode_1.data | Bin 14 -> 0 bytes .../operator_shift_int_resource_RawUnicode_2.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_RawUnicode_3.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_RawUnicode_4.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_RawUnicode_5.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_RawUnicode_6.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_RawUnicode_7.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_RawUnicode_8.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_4.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_5.data | Bin 18 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_6.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_7.data | Bin 22 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_8.data | Bin 22 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_4.data | Bin 20 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_5.data | Bin 18 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_6.data | Bin 20 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_7.data | Bin 22 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_8.data | Bin 22 -> 0 bytes .../operator_shift_int_resource_UnicodeUTF8_0.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_1.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_2.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_3.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_5.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_6.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_7.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_8.data | 1 - .../operator_shift_int_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_Unicode_4.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_Unicode_5.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_Unicode_6.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_Unicode_7.data | Bin 22 -> 0 bytes .../operator_shift_int_resource_Unicode_8.data | Bin 22 -> 0 bytes .../operator_shift_long_resource_Latin1_0.data | 1 - .../operator_shift_long_resource_Latin1_1.data | 1 - .../operator_shift_long_resource_Latin1_2.data | 1 - .../operator_shift_long_resource_Latin1_3.data | 1 - .../operator_shift_long_resource_Latin1_4.data | 1 - .../operator_shift_long_resource_Latin1_5.data | 1 - .../operator_shift_long_resource_Latin1_6.data | 1 - .../operator_shift_long_resource_Latin1_7.data | 1 - .../operator_shift_long_resource_Latin1_8.data | 1 - .../operator_shift_long_resource_Locale_0.data | 1 - .../operator_shift_long_resource_Locale_1.data | 1 - .../operator_shift_long_resource_Locale_2.data | 1 - .../operator_shift_long_resource_Locale_3.data | 1 - .../operator_shift_long_resource_Locale_4.data | 1 - .../operator_shift_long_resource_Locale_5.data | 1 - .../operator_shift_long_resource_Locale_6.data | 1 - .../operator_shift_long_resource_Locale_7.data | 1 - .../operator_shift_long_resource_Locale_8.data | 1 - .../operator_shift_long_resource_RawUnicode_0.data | Bin 14 -> 0 bytes .../operator_shift_long_resource_RawUnicode_1.data | Bin 14 -> 0 bytes .../operator_shift_long_resource_RawUnicode_2.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_RawUnicode_3.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_RawUnicode_4.data | Bin 22 -> 0 bytes .../operator_shift_long_resource_RawUnicode_5.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_RawUnicode_6.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_RawUnicode_7.data | Bin 20 -> 0 bytes .../operator_shift_long_resource_RawUnicode_8.data | Bin 24 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_4.data | Bin 24 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_5.data | Bin 18 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_6.data | Bin 20 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_7.data | Bin 22 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_8.data | Bin 26 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_4.data | Bin 24 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_5.data | Bin 18 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_6.data | Bin 20 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_7.data | Bin 22 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_8.data | Bin 26 -> 0 bytes ...operator_shift_long_resource_UnicodeUTF8_0.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_1.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_2.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_3.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_4.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_5.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_6.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_7.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_8.data | 1 - .../operator_shift_long_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_long_resource_Unicode_4.data | Bin 24 -> 0 bytes .../operator_shift_long_resource_Unicode_5.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_Unicode_6.data | Bin 20 -> 0 bytes .../operator_shift_long_resource_Unicode_7.data | Bin 22 -> 0 bytes .../operator_shift_long_resource_Unicode_8.data | Bin 26 -> 0 bytes .../operator_shift_short_resource_Latin1_0.data | 1 - .../operator_shift_short_resource_Latin1_1.data | 1 - .../operator_shift_short_resource_Latin1_2.data | 1 - .../operator_shift_short_resource_Latin1_3.data | 1 - .../operator_shift_short_resource_Latin1_4.data | 1 - .../operator_shift_short_resource_Locale_0.data | 1 - .../operator_shift_short_resource_Locale_1.data | 1 - .../operator_shift_short_resource_Locale_2.data | 1 - .../operator_shift_short_resource_Locale_3.data | 1 - .../operator_shift_short_resource_Locale_4.data | 1 - ...operator_shift_short_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...operator_shift_short_resource_RawUnicode_1.data | Bin 16 -> 0 bytes ...operator_shift_short_resource_RawUnicode_2.data | Bin 14 -> 0 bytes ...operator_shift_short_resource_RawUnicode_3.data | Bin 18 -> 0 bytes ...operator_shift_short_resource_RawUnicode_4.data | Bin 20 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_1.data | Bin 18 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_2.data | Bin 16 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_4.data | Bin 22 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_1.data | Bin 18 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_2.data | Bin 16 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_4.data | Bin 22 -> 0 bytes ...perator_shift_short_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_short_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_short_resource_Unicode_1.data | Bin 18 -> 0 bytes .../operator_shift_short_resource_Unicode_2.data | Bin 16 -> 0 bytes .../operator_shift_short_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_short_resource_Unicode_4.data | Bin 22 -> 0 bytes .../operator_shift_uint_resource_Latin1_0.data | 1 - .../operator_shift_uint_resource_Latin1_1.data | 1 - .../operator_shift_uint_resource_Latin1_2.data | 1 - .../operator_shift_uint_resource_Latin1_3.data | 1 - .../operator_shift_uint_resource_Latin1_4.data | 1 - .../operator_shift_uint_resource_Locale_0.data | 1 - .../operator_shift_uint_resource_Locale_1.data | 1 - .../operator_shift_uint_resource_Locale_2.data | 1 - .../operator_shift_uint_resource_Locale_3.data | 1 - .../operator_shift_uint_resource_Locale_4.data | 1 - .../operator_shift_uint_resource_RawUnicode_0.data | Bin 14 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_1.data | Bin 14 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_2.data | Bin 16 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_3.data | Bin 18 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_4.data | Bin 18 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_4.data | Bin 20 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_4.data | Bin 20 -> 0 bytes ...operator_shift_uint_resource_UnicodeUTF8_0.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_1.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_2.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_3.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_uint_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_uint_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_uint_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_uint_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_uint_resource_Unicode_4.data | Bin 20 -> 0 bytes .../operator_shift_ulong_resource_Latin1_0.data | 1 - .../operator_shift_ulong_resource_Latin1_1.data | 1 - .../operator_shift_ulong_resource_Latin1_2.data | 1 - .../operator_shift_ulong_resource_Latin1_3.data | 1 - .../operator_shift_ulong_resource_Latin1_4.data | 1 - .../operator_shift_ulong_resource_Locale_0.data | 1 - .../operator_shift_ulong_resource_Locale_1.data | 1 - .../operator_shift_ulong_resource_Locale_2.data | 1 - .../operator_shift_ulong_resource_Locale_3.data | 1 - .../operator_shift_ulong_resource_Locale_4.data | 1 - ...operator_shift_ulong_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_1.data | Bin 14 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_2.data | Bin 16 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_3.data | Bin 18 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_4.data | Bin 22 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_4.data | Bin 24 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_4.data | Bin 24 -> 0 bytes ...perator_shift_ulong_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_ulong_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_ulong_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_ulong_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_ulong_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_ulong_resource_Unicode_4.data | Bin 24 -> 0 bytes .../operator_shift_ushort_resource_Latin1_0.data | 1 - .../operator_shift_ushort_resource_Latin1_1.data | 1 - .../operator_shift_ushort_resource_Latin1_2.data | 1 - .../operator_shift_ushort_resource_Latin1_3.data | 1 - .../operator_shift_ushort_resource_Latin1_4.data | 1 - .../operator_shift_ushort_resource_Locale_0.data | 1 - .../operator_shift_ushort_resource_Locale_1.data | 1 - .../operator_shift_ushort_resource_Locale_2.data | 1 - .../operator_shift_ushort_resource_Locale_3.data | 1 - .../operator_shift_ushort_resource_Locale_4.data | 1 - ...perator_shift_ushort_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_1.data | Bin 14 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_2.data | Bin 16 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_3.data | Bin 18 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_4.data | Bin 18 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_4.data | Bin 20 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_4.data | Bin 20 -> 0 bytes ...erator_shift_ushort_resource_UnicodeUTF8_0.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_1.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_2.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_3.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_ushort_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_ushort_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_ushort_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_ushort_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_ushort_resource_Unicode_4.data | Bin 20 -> 0 bytes .../big_endian/operator_shiftright_resource0.data | 1 - .../big_endian/operator_shiftright_resource1.data | 1 - .../big_endian/operator_shiftright_resource10.data | 1 - .../big_endian/operator_shiftright_resource11.data | 1 - .../big_endian/operator_shiftright_resource12.data | 1 - .../big_endian/operator_shiftright_resource2.data | 1 - .../big_endian/operator_shiftright_resource20.data | 1 - .../big_endian/operator_shiftright_resource21.data | 1 - .../big_endian/operator_shiftright_resource3.data | 1 - .../big_endian/operator_shiftright_resource4.data | 1 - .../big_endian/operator_shiftright_resource5.data | 1 - .../big_endian/operator_shiftright_resource6.data | 1 - .../big_endian/operator_shiftright_resource7.data | 1 - .../big_endian/operator_shiftright_resource8.data | 1 - .../big_endian/operator_shiftright_resource9.data | 1 - ...perator_shift_QByteArray_resource_Latin1_0.data | 0 ...perator_shift_QByteArray_resource_Latin1_1.data | 0 ...perator_shift_QByteArray_resource_Latin1_2.data | 1 - ...perator_shift_QByteArray_resource_Latin1_3.data | 2 - ...perator_shift_QByteArray_resource_Latin1_4.data | 1 - ...perator_shift_QByteArray_resource_Locale_0.data | 0 ...perator_shift_QByteArray_resource_Locale_1.data | 0 ...perator_shift_QByteArray_resource_Locale_2.data | 1 - ...perator_shift_QByteArray_resource_Locale_3.data | 2 - ...perator_shift_QByteArray_resource_Locale_4.data | 1 - ...tor_shift_QByteArray_resource_RawUnicode_0.data | 0 ...tor_shift_QByteArray_resource_RawUnicode_1.data | 0 ...tor_shift_QByteArray_resource_RawUnicode_2.data | Bin 6 -> 0 bytes ...tor_shift_QByteArray_resource_RawUnicode_3.data | Bin 14 -> 0 bytes ...tor_shift_QByteArray_resource_RawUnicode_4.data | Bin 116 -> 0 bytes ..._QByteArray_resource_UnicodeNetworkOrder_0.data | 1 - ..._QByteArray_resource_UnicodeNetworkOrder_1.data | 1 - ..._QByteArray_resource_UnicodeNetworkOrder_2.data | Bin 8 -> 0 bytes ..._QByteArray_resource_UnicodeNetworkOrder_3.data | Bin 16 -> 0 bytes ..._QByteArray_resource_UnicodeNetworkOrder_4.data | Bin 118 -> 0 bytes ...shift_QByteArray_resource_UnicodeReverse_0.data | 1 - ...shift_QByteArray_resource_UnicodeReverse_1.data | 1 - ...shift_QByteArray_resource_UnicodeReverse_2.data | Bin 8 -> 0 bytes ...shift_QByteArray_resource_UnicodeReverse_3.data | Bin 16 -> 0 bytes ...shift_QByteArray_resource_UnicodeReverse_4.data | Bin 118 -> 0 bytes ...or_shift_QByteArray_resource_UnicodeUTF8_0.data | 0 ...or_shift_QByteArray_resource_UnicodeUTF8_1.data | 0 ...or_shift_QByteArray_resource_UnicodeUTF8_2.data | 1 - ...or_shift_QByteArray_resource_UnicodeUTF8_3.data | 2 - ...or_shift_QByteArray_resource_UnicodeUTF8_4.data | 1 - ...erator_shift_QByteArray_resource_Unicode_0.data | 1 - ...erator_shift_QByteArray_resource_Unicode_1.data | 1 - ...erator_shift_QByteArray_resource_Unicode_2.data | Bin 8 -> 0 bytes ...erator_shift_QByteArray_resource_Unicode_3.data | Bin 16 -> 0 bytes ...erator_shift_QByteArray_resource_Unicode_4.data | Bin 118 -> 0 bytes .../operator_shift_QChar_resource_Latin1_0.data | 1 - .../operator_shift_QChar_resource_Latin1_1.data | 1 - .../operator_shift_QChar_resource_Latin1_2.data | 1 - .../operator_shift_QChar_resource_Latin1_3.data | 1 - .../operator_shift_QChar_resource_Latin1_4.data | 1 - .../operator_shift_QChar_resource_Locale_0.data | 1 - .../operator_shift_QChar_resource_Locale_1.data | 1 - .../operator_shift_QChar_resource_Locale_2.data | 1 - .../operator_shift_QChar_resource_Locale_3.data | 1 - .../operator_shift_QChar_resource_Locale_4.data | 1 - ...operator_shift_QChar_resource_RawUnicode_0.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_1.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_2.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_3.data | Bin 2 -> 0 bytes ...operator_shift_QChar_resource_RawUnicode_4.data | Bin 2 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_0.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_1.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_2.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_3.data | Bin 4 -> 0 bytes ...shift_QChar_resource_UnicodeNetworkOrder_4.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_0.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_1.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_2.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_3.data | Bin 4 -> 0 bytes ...ator_shift_QChar_resource_UnicodeReverse_4.data | Bin 4 -> 0 bytes ...perator_shift_QChar_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_QChar_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_QChar_resource_Unicode_0.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_1.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_2.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_3.data | Bin 4 -> 0 bytes .../operator_shift_QChar_resource_Unicode_4.data | Bin 4 -> 0 bytes .../operator_shift_QString_resource_Latin1_0.data | 0 .../operator_shift_QString_resource_Latin1_1.data | 0 .../operator_shift_QString_resource_Latin1_2.data | 1 - .../operator_shift_QString_resource_Latin1_3.data | 2 - .../operator_shift_QString_resource_Latin1_4.data | 1 - .../operator_shift_QString_resource_Locale_0.data | 0 .../operator_shift_QString_resource_Locale_1.data | 0 .../operator_shift_QString_resource_Locale_2.data | 1 - .../operator_shift_QString_resource_Locale_3.data | 2 - .../operator_shift_QString_resource_Locale_4.data | 1 - ...erator_shift_QString_resource_RawUnicode_0.data | 0 ...erator_shift_QString_resource_RawUnicode_1.data | 0 ...erator_shift_QString_resource_RawUnicode_2.data | Bin 6 -> 0 bytes ...erator_shift_QString_resource_RawUnicode_3.data | Bin 14 -> 0 bytes ...erator_shift_QString_resource_RawUnicode_4.data | Bin 116 -> 0 bytes ...ift_QString_resource_UnicodeNetworkOrder_0.data | 0 ...ift_QString_resource_UnicodeNetworkOrder_1.data | 0 ...ift_QString_resource_UnicodeNetworkOrder_2.data | Bin 8 -> 0 bytes ...ift_QString_resource_UnicodeNetworkOrder_3.data | Bin 16 -> 0 bytes ...ift_QString_resource_UnicodeNetworkOrder_4.data | Bin 118 -> 0 bytes ...or_shift_QString_resource_UnicodeReverse_0.data | 1 - ...or_shift_QString_resource_UnicodeReverse_1.data | 1 - ...or_shift_QString_resource_UnicodeReverse_2.data | Bin 8 -> 0 bytes ...or_shift_QString_resource_UnicodeReverse_3.data | Bin 16 -> 0 bytes ...or_shift_QString_resource_UnicodeReverse_4.data | Bin 118 -> 0 bytes ...rator_shift_QString_resource_UnicodeUTF8_0.data | 0 ...rator_shift_QString_resource_UnicodeUTF8_1.data | 0 ...rator_shift_QString_resource_UnicodeUTF8_2.data | 1 - ...rator_shift_QString_resource_UnicodeUTF8_3.data | 2 - ...rator_shift_QString_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_QString_resource_Unicode_0.data | 1 - .../operator_shift_QString_resource_Unicode_1.data | 1 - .../operator_shift_QString_resource_Unicode_2.data | Bin 8 -> 0 bytes .../operator_shift_QString_resource_Unicode_3.data | Bin 16 -> 0 bytes .../operator_shift_QString_resource_Unicode_4.data | Bin 118 -> 0 bytes .../operator_shift_char_resource_Latin1_0.data | 1 - .../operator_shift_char_resource_Latin1_1.data | 1 - .../operator_shift_char_resource_Latin1_2.data | 1 - .../operator_shift_char_resource_Latin1_3.data | 1 - .../operator_shift_char_resource_Latin1_4.data | 1 - .../operator_shift_char_resource_Locale_0.data | 1 - .../operator_shift_char_resource_Locale_1.data | 1 - .../operator_shift_char_resource_Locale_2.data | 1 - .../operator_shift_char_resource_Locale_3.data | 1 - .../operator_shift_char_resource_Locale_4.data | 1 - .../operator_shift_char_resource_RawUnicode_0.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_1.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_2.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_3.data | Bin 2 -> 0 bytes .../operator_shift_char_resource_RawUnicode_4.data | Bin 2 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_0.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_1.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_2.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_3.data | Bin 4 -> 0 bytes ..._shift_char_resource_UnicodeNetworkOrder_4.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_0.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_1.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_2.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_3.data | Bin 4 -> 0 bytes ...rator_shift_char_resource_UnicodeReverse_4.data | Bin 4 -> 0 bytes ...operator_shift_char_resource_UnicodeUTF8_0.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_1.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_2.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_3.data | 1 - ...operator_shift_char_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_char_resource_Unicode_0.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_1.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_2.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_3.data | Bin 4 -> 0 bytes .../operator_shift_char_resource_Unicode_4.data | Bin 4 -> 0 bytes .../operator_shift_double_resource_Latin1_0.data | 1 - .../operator_shift_double_resource_Latin1_1.data | 1 - .../operator_shift_double_resource_Latin1_2.data | 1 - .../operator_shift_double_resource_Latin1_3.data | 1 - .../operator_shift_double_resource_Latin1_4.data | 1 - .../operator_shift_double_resource_Latin1_5.data | 1 - .../operator_shift_double_resource_Latin1_6.data | 1 - .../operator_shift_double_resource_Locale_0.data | 1 - .../operator_shift_double_resource_Locale_1.data | 1 - .../operator_shift_double_resource_Locale_2.data | 1 - .../operator_shift_double_resource_Locale_3.data | 1 - .../operator_shift_double_resource_Locale_4.data | 1 - .../operator_shift_double_resource_Locale_5.data | 1 - .../operator_shift_double_resource_Locale_6.data | 1 - ...perator_shift_double_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...perator_shift_double_resource_RawUnicode_1.data | Bin 24 -> 0 bytes ...perator_shift_double_resource_RawUnicode_2.data | Bin 26 -> 0 bytes ...perator_shift_double_resource_RawUnicode_3.data | Bin 26 -> 0 bytes ...perator_shift_double_resource_RawUnicode_4.data | Bin 28 -> 0 bytes ...perator_shift_double_resource_RawUnicode_5.data | Bin 32 -> 0 bytes ...perator_shift_double_resource_RawUnicode_6.data | Bin 34 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_1.data | Bin 26 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_2.data | Bin 28 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_3.data | Bin 28 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_4.data | Bin 30 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_5.data | Bin 34 -> 0 bytes ...hift_double_resource_UnicodeNetworkOrder_6.data | Bin 36 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_1.data | Bin 26 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_2.data | Bin 28 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_3.data | Bin 28 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_4.data | Bin 30 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_5.data | Bin 34 -> 0 bytes ...tor_shift_double_resource_UnicodeReverse_6.data | Bin 36 -> 0 bytes ...erator_shift_double_resource_UnicodeUTF8_0.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_1.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_2.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_3.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_4.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_5.data | 1 - ...erator_shift_double_resource_UnicodeUTF8_6.data | 1 - .../operator_shift_double_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_double_resource_Unicode_1.data | Bin 26 -> 0 bytes .../operator_shift_double_resource_Unicode_2.data | Bin 28 -> 0 bytes .../operator_shift_double_resource_Unicode_3.data | Bin 28 -> 0 bytes .../operator_shift_double_resource_Unicode_4.data | Bin 30 -> 0 bytes .../operator_shift_double_resource_Unicode_5.data | Bin 34 -> 0 bytes .../operator_shift_double_resource_Unicode_6.data | Bin 36 -> 0 bytes .../operator_shift_float_resource_Latin1_0.data | 1 - .../operator_shift_float_resource_Latin1_1.data | 1 - .../operator_shift_float_resource_Latin1_2.data | 1 - .../operator_shift_float_resource_Latin1_3.data | 1 - .../operator_shift_float_resource_Latin1_4.data | 1 - .../operator_shift_float_resource_Locale_0.data | 1 - .../operator_shift_float_resource_Locale_1.data | 1 - .../operator_shift_float_resource_Locale_2.data | 1 - .../operator_shift_float_resource_Locale_3.data | 1 - .../operator_shift_float_resource_Locale_4.data | 1 - ...operator_shift_float_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...operator_shift_float_resource_RawUnicode_1.data | Bin 24 -> 0 bytes ...operator_shift_float_resource_RawUnicode_2.data | Bin 26 -> 0 bytes ...operator_shift_float_resource_RawUnicode_3.data | Bin 26 -> 0 bytes ...operator_shift_float_resource_RawUnicode_4.data | Bin 28 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_1.data | Bin 26 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_2.data | Bin 28 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_3.data | Bin 28 -> 0 bytes ...shift_float_resource_UnicodeNetworkOrder_4.data | Bin 30 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_1.data | Bin 26 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_2.data | Bin 28 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_3.data | Bin 28 -> 0 bytes ...ator_shift_float_resource_UnicodeReverse_4.data | Bin 30 -> 0 bytes ...perator_shift_float_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_float_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_float_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_float_resource_Unicode_1.data | Bin 26 -> 0 bytes .../operator_shift_float_resource_Unicode_2.data | Bin 28 -> 0 bytes .../operator_shift_float_resource_Unicode_3.data | Bin 28 -> 0 bytes .../operator_shift_float_resource_Unicode_4.data | Bin 30 -> 0 bytes .../operator_shift_int_resource_Latin1_0.data | 1 - .../operator_shift_int_resource_Latin1_1.data | 1 - .../operator_shift_int_resource_Latin1_2.data | 1 - .../operator_shift_int_resource_Latin1_3.data | 1 - .../operator_shift_int_resource_Latin1_4.data | 1 - .../operator_shift_int_resource_Latin1_5.data | 1 - .../operator_shift_int_resource_Latin1_6.data | 1 - .../operator_shift_int_resource_Latin1_7.data | 1 - .../operator_shift_int_resource_Latin1_8.data | 1 - .../operator_shift_int_resource_Locale_0.data | 1 - .../operator_shift_int_resource_Locale_1.data | 1 - .../operator_shift_int_resource_Locale_2.data | 1 - .../operator_shift_int_resource_Locale_3.data | 1 - .../operator_shift_int_resource_Locale_4.data | 1 - .../operator_shift_int_resource_Locale_5.data | 1 - .../operator_shift_int_resource_Locale_6.data | 1 - .../operator_shift_int_resource_Locale_7.data | 1 - .../operator_shift_int_resource_Locale_8.data | 1 - .../operator_shift_int_resource_RawUnicode_0.data | Bin 14 -> 0 bytes .../operator_shift_int_resource_RawUnicode_1.data | Bin 14 -> 0 bytes .../operator_shift_int_resource_RawUnicode_2.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_RawUnicode_3.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_RawUnicode_4.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_RawUnicode_5.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_RawUnicode_6.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_RawUnicode_7.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_RawUnicode_8.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_4.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_5.data | Bin 18 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_6.data | Bin 20 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_7.data | Bin 22 -> 0 bytes ...r_shift_int_resource_UnicodeNetworkOrder_8.data | Bin 22 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_4.data | Bin 20 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_5.data | Bin 18 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_6.data | Bin 20 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_7.data | Bin 22 -> 0 bytes ...erator_shift_int_resource_UnicodeReverse_8.data | Bin 22 -> 0 bytes .../operator_shift_int_resource_UnicodeUTF8_0.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_1.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_2.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_3.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_5.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_6.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_7.data | 1 - .../operator_shift_int_resource_UnicodeUTF8_8.data | 1 - .../operator_shift_int_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_int_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_Unicode_4.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_Unicode_5.data | Bin 18 -> 0 bytes .../operator_shift_int_resource_Unicode_6.data | Bin 20 -> 0 bytes .../operator_shift_int_resource_Unicode_7.data | Bin 22 -> 0 bytes .../operator_shift_int_resource_Unicode_8.data | Bin 22 -> 0 bytes .../operator_shift_long_resource_Latin1_0.data | 1 - .../operator_shift_long_resource_Latin1_1.data | 1 - .../operator_shift_long_resource_Latin1_2.data | 1 - .../operator_shift_long_resource_Latin1_3.data | 1 - .../operator_shift_long_resource_Latin1_4.data | 1 - .../operator_shift_long_resource_Latin1_5.data | 1 - .../operator_shift_long_resource_Latin1_6.data | 1 - .../operator_shift_long_resource_Latin1_7.data | 1 - .../operator_shift_long_resource_Latin1_8.data | 1 - .../operator_shift_long_resource_Locale_0.data | 1 - .../operator_shift_long_resource_Locale_1.data | 1 - .../operator_shift_long_resource_Locale_2.data | 1 - .../operator_shift_long_resource_Locale_3.data | 1 - .../operator_shift_long_resource_Locale_4.data | 1 - .../operator_shift_long_resource_Locale_5.data | 1 - .../operator_shift_long_resource_Locale_6.data | 1 - .../operator_shift_long_resource_Locale_7.data | 1 - .../operator_shift_long_resource_Locale_8.data | 1 - .../operator_shift_long_resource_RawUnicode_0.data | Bin 14 -> 0 bytes .../operator_shift_long_resource_RawUnicode_1.data | Bin 14 -> 0 bytes .../operator_shift_long_resource_RawUnicode_2.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_RawUnicode_3.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_RawUnicode_4.data | Bin 22 -> 0 bytes .../operator_shift_long_resource_RawUnicode_5.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_RawUnicode_6.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_RawUnicode_7.data | Bin 20 -> 0 bytes .../operator_shift_long_resource_RawUnicode_8.data | Bin 24 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_4.data | Bin 24 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_5.data | Bin 18 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_6.data | Bin 20 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_7.data | Bin 22 -> 0 bytes ..._shift_long_resource_UnicodeNetworkOrder_8.data | Bin 26 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_4.data | Bin 24 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_5.data | Bin 18 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_6.data | Bin 20 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_7.data | Bin 22 -> 0 bytes ...rator_shift_long_resource_UnicodeReverse_8.data | Bin 26 -> 0 bytes ...operator_shift_long_resource_UnicodeUTF8_0.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_1.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_2.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_3.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_4.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_5.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_6.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_7.data | 1 - ...operator_shift_long_resource_UnicodeUTF8_8.data | 1 - .../operator_shift_long_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_long_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_long_resource_Unicode_4.data | Bin 24 -> 0 bytes .../operator_shift_long_resource_Unicode_5.data | Bin 18 -> 0 bytes .../operator_shift_long_resource_Unicode_6.data | Bin 20 -> 0 bytes .../operator_shift_long_resource_Unicode_7.data | Bin 22 -> 0 bytes .../operator_shift_long_resource_Unicode_8.data | Bin 26 -> 0 bytes .../operator_shift_short_resource_Latin1_0.data | 1 - .../operator_shift_short_resource_Latin1_1.data | 1 - .../operator_shift_short_resource_Latin1_2.data | 1 - .../operator_shift_short_resource_Latin1_3.data | 1 - .../operator_shift_short_resource_Latin1_4.data | 1 - .../operator_shift_short_resource_Locale_0.data | 1 - .../operator_shift_short_resource_Locale_1.data | 1 - .../operator_shift_short_resource_Locale_2.data | 1 - .../operator_shift_short_resource_Locale_3.data | 1 - .../operator_shift_short_resource_Locale_4.data | 1 - ...operator_shift_short_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...operator_shift_short_resource_RawUnicode_1.data | Bin 16 -> 0 bytes ...operator_shift_short_resource_RawUnicode_2.data | Bin 14 -> 0 bytes ...operator_shift_short_resource_RawUnicode_3.data | Bin 18 -> 0 bytes ...operator_shift_short_resource_RawUnicode_4.data | Bin 20 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_1.data | Bin 18 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_2.data | Bin 16 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...shift_short_resource_UnicodeNetworkOrder_4.data | Bin 22 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_1.data | Bin 18 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_2.data | Bin 16 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...ator_shift_short_resource_UnicodeReverse_4.data | Bin 22 -> 0 bytes ...perator_shift_short_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_short_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_short_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_short_resource_Unicode_1.data | Bin 18 -> 0 bytes .../operator_shift_short_resource_Unicode_2.data | Bin 16 -> 0 bytes .../operator_shift_short_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_short_resource_Unicode_4.data | Bin 22 -> 0 bytes .../operator_shift_uint_resource_Latin1_0.data | 1 - .../operator_shift_uint_resource_Latin1_1.data | 1 - .../operator_shift_uint_resource_Latin1_2.data | 1 - .../operator_shift_uint_resource_Latin1_3.data | 1 - .../operator_shift_uint_resource_Latin1_4.data | 1 - .../operator_shift_uint_resource_Locale_0.data | 1 - .../operator_shift_uint_resource_Locale_1.data | 1 - .../operator_shift_uint_resource_Locale_2.data | 1 - .../operator_shift_uint_resource_Locale_3.data | 1 - .../operator_shift_uint_resource_Locale_4.data | 1 - .../operator_shift_uint_resource_RawUnicode_0.data | Bin 14 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_1.data | Bin 14 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_2.data | Bin 16 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_3.data | Bin 18 -> 0 bytes .../operator_shift_uint_resource_RawUnicode_4.data | Bin 18 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ..._shift_uint_resource_UnicodeNetworkOrder_4.data | Bin 20 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...rator_shift_uint_resource_UnicodeReverse_4.data | Bin 20 -> 0 bytes ...operator_shift_uint_resource_UnicodeUTF8_0.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_1.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_2.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_3.data | 1 - ...operator_shift_uint_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_uint_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_uint_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_uint_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_uint_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_uint_resource_Unicode_4.data | Bin 20 -> 0 bytes .../operator_shift_ulong_resource_Latin1_0.data | 1 - .../operator_shift_ulong_resource_Latin1_1.data | 1 - .../operator_shift_ulong_resource_Latin1_2.data | 1 - .../operator_shift_ulong_resource_Latin1_3.data | 1 - .../operator_shift_ulong_resource_Latin1_4.data | 1 - .../operator_shift_ulong_resource_Locale_0.data | 1 - .../operator_shift_ulong_resource_Locale_1.data | 1 - .../operator_shift_ulong_resource_Locale_2.data | 1 - .../operator_shift_ulong_resource_Locale_3.data | 1 - .../operator_shift_ulong_resource_Locale_4.data | 1 - ...operator_shift_ulong_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_1.data | Bin 14 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_2.data | Bin 16 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_3.data | Bin 18 -> 0 bytes ...operator_shift_ulong_resource_RawUnicode_4.data | Bin 22 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...shift_ulong_resource_UnicodeNetworkOrder_4.data | Bin 24 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...ator_shift_ulong_resource_UnicodeReverse_4.data | Bin 24 -> 0 bytes ...perator_shift_ulong_resource_UnicodeUTF8_0.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_1.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_2.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_3.data | 1 - ...perator_shift_ulong_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_ulong_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_ulong_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_ulong_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_ulong_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_ulong_resource_Unicode_4.data | Bin 24 -> 0 bytes .../operator_shift_ushort_resource_Latin1_0.data | 1 - .../operator_shift_ushort_resource_Latin1_1.data | 1 - .../operator_shift_ushort_resource_Latin1_2.data | 1 - .../operator_shift_ushort_resource_Latin1_3.data | 1 - .../operator_shift_ushort_resource_Latin1_4.data | 1 - .../operator_shift_ushort_resource_Locale_0.data | 1 - .../operator_shift_ushort_resource_Locale_1.data | 1 - .../operator_shift_ushort_resource_Locale_2.data | 1 - .../operator_shift_ushort_resource_Locale_3.data | 1 - .../operator_shift_ushort_resource_Locale_4.data | 1 - ...perator_shift_ushort_resource_RawUnicode_0.data | Bin 14 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_1.data | Bin 14 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_2.data | Bin 16 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_3.data | Bin 18 -> 0 bytes ...perator_shift_ushort_resource_RawUnicode_4.data | Bin 18 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_0.data | Bin 16 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_1.data | Bin 16 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_2.data | Bin 18 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_3.data | Bin 20 -> 0 bytes ...hift_ushort_resource_UnicodeNetworkOrder_4.data | Bin 20 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_0.data | Bin 16 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_1.data | Bin 16 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_2.data | Bin 18 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_3.data | Bin 20 -> 0 bytes ...tor_shift_ushort_resource_UnicodeReverse_4.data | Bin 20 -> 0 bytes ...erator_shift_ushort_resource_UnicodeUTF8_0.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_1.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_2.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_3.data | 1 - ...erator_shift_ushort_resource_UnicodeUTF8_4.data | 1 - .../operator_shift_ushort_resource_Unicode_0.data | Bin 16 -> 0 bytes .../operator_shift_ushort_resource_Unicode_1.data | Bin 16 -> 0 bytes .../operator_shift_ushort_resource_Unicode_2.data | Bin 18 -> 0 bytes .../operator_shift_ushort_resource_Unicode_3.data | Bin 20 -> 0 bytes .../operator_shift_ushort_resource_Unicode_4.data | Bin 20 -> 0 bytes .../operator_shiftright_resource0.data | 1 - .../operator_shiftright_resource1.data | 1 - .../operator_shiftright_resource10.data | 1 - .../operator_shiftright_resource11.data | 1 - .../operator_shiftright_resource12.data | 1 - .../operator_shiftright_resource2.data | 1 - .../operator_shiftright_resource20.data | 1 - .../operator_shiftright_resource21.data | 1 - .../operator_shiftright_resource3.data | 1 - .../operator_shiftright_resource4.data | 1 - .../operator_shiftright_resource5.data | 1 - .../operator_shiftright_resource6.data | 1 - .../operator_shiftright_resource7.data | 1 - .../operator_shiftright_resource8.data | 1 - .../operator_shiftright_resource9.data | 1 - tests/auto/corelib/io/qtextstream/rfc3261.txt | 15067 ------------------- tests/auto/corelib/io/qtextstream/shift-jis.txt | 764 - .../corelib/io/qtextstream/stdinProcess/main.cpp | 42 - .../io/qtextstream/stdinProcess/stdinProcess.pro | 9 - tests/auto/corelib/io/qtextstream/task113817.txt | 1095 -- tests/auto/corelib/io/qtextstream/test/test.pro | 26 - .../corelib/io/qtextstream/tst_qtextstream.cpp | 3057 ---- 1032 files changed, 1 insertion(+), 24152 deletions(-) delete mode 100644 tests/auto/corelib/io/qdatastream/.gitignore delete mode 100644 tests/auto/corelib/io/qdatastream/datastream.q42 delete mode 100644 tests/auto/corelib/io/qdatastream/qdatastream.pro delete mode 100644 tests/auto/corelib/io/qdatastream/testdata.qrc delete mode 100644 tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp delete mode 100644 tests/auto/corelib/io/qtextstream/.gitattributes delete mode 100644 tests/auto/corelib/io/qtextstream/.gitignore delete mode 100644 tests/auto/corelib/io/qtextstream/BLACKLIST delete mode 100644 tests/auto/corelib/io/qtextstream/qtextstream.pro delete mode 100644 tests/auto/corelib/io/qtextstream/qtextstream.qrc delete mode 100644 tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp delete mode 100644 tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro delete mode 100644 tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp delete mode 100644 tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data delete mode 100644 tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data delete mode 100644 tests/auto/corelib/io/qtextstream/rfc3261.txt delete mode 100644 tests/auto/corelib/io/qtextstream/shift-jis.txt delete mode 100644 tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp delete mode 100644 tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro delete mode 100644 tests/auto/corelib/io/qtextstream/task113817.txt delete mode 100644 tests/auto/corelib/io/qtextstream/test/test.pro delete mode 100644 tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp (limited to 'tests/auto/corelib/io') diff --git a/tests/auto/corelib/io/io.pro b/tests/auto/corelib/io/io.pro index bd2a9f4c8e..5618a42203 100644 --- a/tests/auto/corelib/io/io.pro +++ b/tests/auto/corelib/io/io.pro @@ -2,7 +2,6 @@ TEMPLATE=subdirs SUBDIRS=\ qabstractfileengine \ qbuffer \ - qdatastream \ qdataurl \ qdebug \ qdir \ @@ -30,19 +29,16 @@ SUBDIRS=\ qstorageinfo \ qtemporarydir \ qtemporaryfile \ - qtextstream \ qurl \ qurlinternal \ qurlquery \ !qtHaveModule(gui): SUBDIRS -= \ - qdatastream \ qsettings !qtHaveModule(network): SUBDIRS -= \ qiodevice \ - qprocess \ - qtextstream + qprocess !qtHaveModule(concurrent): SUBDIRS -= \ qdebug \ diff --git a/tests/auto/corelib/io/qdatastream/.gitignore b/tests/auto/corelib/io/qdatastream/.gitignore deleted file mode 100644 index cdcbaa591e..0000000000 --- a/tests/auto/corelib/io/qdatastream/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -datastream.tmp -tst_qdatastream diff --git a/tests/auto/corelib/io/qdatastream/datastream.q42 b/tests/auto/corelib/io/qdatastream/datastream.q42 deleted file mode 100644 index 5c83f5c7fc..0000000000 Binary files a/tests/auto/corelib/io/qdatastream/datastream.q42 and /dev/null differ diff --git a/tests/auto/corelib/io/qdatastream/qdatastream.pro b/tests/auto/corelib/io/qdatastream/qdatastream.pro deleted file mode 100644 index 291b3eb611..0000000000 --- a/tests/auto/corelib/io/qdatastream/qdatastream.pro +++ /dev/null @@ -1,11 +0,0 @@ -CONFIG += testcase -TARGET = tst_qdatastream -QT += testlib -SOURCES = tst_qdatastream.cpp - -TESTDATA += datastream.q42 - -android { - RESOURCES += \ - testdata.qrc -} diff --git a/tests/auto/corelib/io/qdatastream/testdata.qrc b/tests/auto/corelib/io/qdatastream/testdata.qrc deleted file mode 100644 index fb63cb3438..0000000000 --- a/tests/auto/corelib/io/qdatastream/testdata.qrc +++ /dev/null @@ -1,5 +0,0 @@ - - - datastream.q42 - - diff --git a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp b/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp deleted file mode 100644 index 14a2528cc6..0000000000 --- a/tests/auto/corelib/io/qdatastream/tst_qdatastream.cpp +++ /dev/null @@ -1,3484 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include -#include -#include -#include -#include -#include -#include -#include - -class tst_QDataStream : public QObject -{ -Q_OBJECT - -public: - void stream_data(int noOfElements); - -public slots: - void initTestCase(); - void cleanupTestCase(); - -private slots: - void getSetCheck(); - void stream_bool_data(); - void stream_bool(); - - void stream_QBitArray_data(); - void stream_QBitArray(); - - void stream_QBrush_data(); - void stream_QBrush(); - - void stream_QColor_data(); - void stream_QColor(); - - void stream_QByteArray_data(); - void stream_QByteArray(); - -#ifndef QT_NO_CURSOR - void stream_QCursor_data(); - void stream_QCursor(); -#endif - - void stream_QDate_data(); - void stream_QDate(); - - void stream_QTime_data(); - void stream_QTime(); - - void stream_QDateTime_data(); - void stream_QDateTime(); - - void stream_nullptr_t_data(); - void stream_nullptr_t(); - - void stream_QFont_data(); - void stream_QFont(); - - void stream_QImage_data(); - void stream_QImage(); - - void stream_QPen_data(); - void stream_QPen(); - - void stream_QPixmap_data(); - void stream_QPixmap(); - - void stream_QPoint_data(); - void stream_QPoint(); - - void stream_QRect_data(); - void stream_QRect(); - - void stream_QPolygon_data(); - void stream_QPolygon(); - - void stream_QRegion_data(); - void stream_QRegion(); - - void stream_QSize_data(); - void stream_QSize(); - - void stream_QString_data(); - void stream_QString(); - - void stream_QRegExp_data(); - void stream_QRegExp(); - - void stream_Map_data(); - void stream_Map(); - - void stream_Hash_data(); - void stream_Hash(); - - void stream_qint64_data(); - void stream_qint64(); - - void stream_QIcon_data(); - void stream_QIcon(); - - void stream_QEasingCurve_data(); - void stream_QEasingCurve(); - - void stream_atEnd_data(); - void stream_atEnd(); - - void stream_writeError(); - - void stream_QByteArray2(); - - void setVersion_data(); - void setVersion(); - - void skipRawData_data(); - void skipRawData(); - - void status_qint8_data(); - void status_qint8(); - void status_qint16_data(); - void status_qint16(); - void status_qint32_data(); - void status_qint32(); - void status_qint64_data(); - void status_qint64(); - - void status_float_data(); - void status_float(); - void status_double_data(); - void status_double(); - - void status_charptr_QByteArray_data(); - void status_charptr_QByteArray(); - - void status_QString_data(); - void status_QString(); - - void status_QBitArray_data(); - void status_QBitArray(); - - void status_QHash_QMap(); - - void status_QLinkedList_QList_QVector(); - - void streamToAndFromQByteArray(); - - void streamRealDataTypes(); - - void floatingPointPrecision(); - - void compatibility_Qt3(); - void compatibility_Qt2(); - - void floatingPointNaN(); - - void transaction_data(); - void transaction(); - void nestedTransactionsResult_data(); - void nestedTransactionsResult(); - -private: - void writebool(QDataStream *s); - void writeQBitArray(QDataStream *s); - void writeQBrush(QDataStream *s); - void writeQColor(QDataStream *s); - void writeQByteArray(QDataStream *s); - void writenullptr_t(QDataStream *s); -#ifndef QT_NO_CURSOR - void writeQCursor(QDataStream *s); -#endif - void writeQWaitCursor(QDataStream *s); - void writeQDate(QDataStream *s); - void writeQTime(QDataStream *s); - void writeQDateTime(QDataStream *s); - void writeQFont(QDataStream *s); - void writeQImage(QDataStream *s); - void writeQPen(QDataStream *s); - void writeQPixmap(QDataStream *s); - void writeQPoint(QDataStream *s); - void writeQRect(QDataStream *s); - void writeQPolygon(QDataStream *s); - void writeQRegion(QDataStream *s); - void writeQSize(QDataStream *s); - void writeQString(QDataStream* dev); - void writeQRegExp(QDataStream* dev); - void writeMap(QDataStream* dev); - void writeHash(QDataStream* dev); - void writeqint64(QDataStream *s); - void writeQIcon(QDataStream *s); - void writeQEasingCurve(QDataStream *s); - - void readbool(QDataStream *s); - void readQBitArray(QDataStream *s); - void readQBrush(QDataStream *s); - void readQColor(QDataStream *s); - void readQByteArray(QDataStream *s); - void readnullptr_t(QDataStream *s); -#ifndef QT_NO_CURSOR - void readQCursor(QDataStream *s); -#endif - void readQDate(QDataStream *s); - void readQTime(QDataStream *s); - void readQDateTime(QDataStream *s); - void readQFont(QDataStream *s); - void readQImage(QDataStream *s); - void readQPen(QDataStream *s); - void readQPixmap(QDataStream *s); - void readQPoint(QDataStream *s); - void readQRect(QDataStream *s); - void readQPolygon(QDataStream *s); - void readQRegion(QDataStream *s); - void readQSize(QDataStream *s); - void readQString(QDataStream *s); - void readQRegExp(QDataStream *s); - void readMap(QDataStream *s); - void readHash(QDataStream *s); - void readqint64(QDataStream *s); - void readQIcon(QDataStream *s); - void readQEasingCurve(QDataStream *s); - -private: - QSharedPointer m_tempDir; - QString m_previousCurrent; -}; - -static int NColorRoles[] = { - QPalette::NoRole, // No Version - QPalette::NoRole, // Qt_1_0 - QPalette::HighlightedText + 1, // Qt_2_0 - QPalette::HighlightedText + 1, // Qt_2_1 - QPalette::LinkVisited + 1, // Qt_3_0 - QPalette::HighlightedText + 1, // Qt_3_1 - QPalette::HighlightedText + 1, // Qt_3_3 - QPalette::HighlightedText + 1, // Qt_4_0, Qt_4_1 - QPalette::HighlightedText + 1, // Qt_4_2 - QPalette::AlternateBase + 1, // Qt_4_3 - QPalette::ToolTipText + 1, // Qt_4_4 - QPalette::ToolTipText + 1, // Qt_4_5 - QPalette::ToolTipText + 1, // Qt_4_6 - QPalette::ToolTipText + 1, // Qt_5_0 - QPalette::ToolTipText + 1, // Qt_5_1 - QPalette::ToolTipText + 1, // Qt_5_2 - QPalette::ToolTipText + 1, // Qt_5_3 - QPalette::ToolTipText + 1, // Qt_5_4 - QPalette::ToolTipText + 1, // Qt_5_5 - QPalette::ToolTipText + 1, // Qt_5_6 - 0 // add the correct value for Qt_5_7 here later -}; - -// Testing get/set functions -void tst_QDataStream::getSetCheck() -{ - QDataStream obj1; - // QIODevice * QDataStream::device() - // void QDataStream::setDevice(QIODevice *) - QFile *var1 = new QFile; - obj1.setDevice(var1); - QCOMPARE((QIODevice *)var1, (QIODevice *)obj1.device()); - obj1.setDevice((QIODevice *)0); - QCOMPARE((QIODevice *)0, (QIODevice *)obj1.device()); - delete var1; - - // Status QDataStream::status() - // void QDataStream::setStatus(Status) - obj1.setStatus(QDataStream::Ok); - QCOMPARE(QDataStream::Ok, obj1.status()); - obj1.setStatus(QDataStream::ReadPastEnd); - QCOMPARE(QDataStream::ReadPastEnd, obj1.status()); - obj1.resetStatus(); - obj1.setStatus(QDataStream::ReadCorruptData); - QCOMPARE(QDataStream::ReadCorruptData, obj1.status()); -} - -void tst_QDataStream::initTestCase() -{ - m_previousCurrent = QDir::currentPath(); - m_tempDir = QSharedPointer::create(); - QVERIFY2(!m_tempDir.isNull(), qPrintable("Could not create temporary directory.")); - QVERIFY2(QDir::setCurrent(m_tempDir->path()), qPrintable("Could not switch current directory")); -} - -void tst_QDataStream::cleanupTestCase() -{ - QFile::remove(QLatin1String("qdatastream.out")); - QFile::remove(QLatin1String("datastream.tmp")); - - QDir::setCurrent(m_previousCurrent); -} - -static int dataIndex(const QString &tag) -{ - int pos = tag.lastIndexOf(QLatin1Char('_')); - if (pos >= 0) { - int ret = 0; - QString count = tag.mid(pos + 1); - bool ok; - ret = count.toInt(&ok); - if (ok) - return ret; - } - return -1; -} - -static const char * const devices[] = { - "file", - "bytearray", - "buffer", - 0 -}; - -/* - IMPORTANT. - In this testcase i follow a different approach than usual: I don't use the full power of - QtTestTable and QtTestData. This is done deliberately because QtTestData uses a QDataStream - itself to handle its data. So it would be a bit inapropriate to fully rely on QtTestData in this - testcase. - I do use QString in QtTestData because this is thouroughly tested in the selftest. -*/ -void tst_QDataStream::stream_data(int noOfElements) -{ - QTest::addColumn("device"); - QTest::addColumn("byteOrder"); - - for (int d=0; devices[d] != 0; d++) { - QString device = devices[d]; - for (int b=0; b<2; b++) { - QString byte_order = b == 0 ? "BigEndian" : "LittleEndian"; - - QString tag = device + QLatin1Char('_') + byte_order; - for (int e=0; e.?/"); - } - return QString("foo"); -} -#define MAX_QSTRING_DATA 7 - -void tst_QDataStream::stream_QString_data() -{ - stream_data(MAX_QSTRING_DATA); -} - -void tst_QDataStream::stream_QString() -{ - STREAM_IMPL(QString); -} - -void tst_QDataStream::writeQString(QDataStream* s) -{ - QString test(stringData(dataIndex(QTest::currentDataTag()))); - *s << test; - *s << QString("Her er det noe tekst"); - *s << test; - *s << QString(); - *s << test; - *s << QString(""); - *s << test; - *s << QString("nonempty"); - *s << test; -} - -void tst_QDataStream::readQString(QDataStream *s) -{ - QString S; - QString test(stringData(dataIndex(QTest::currentDataTag()))); - - *s >> S; - QCOMPARE(S, test); - *s >> S; - QCOMPARE(S, QString("Her er det noe tekst")); - *s >> S; - QCOMPARE(S, test); - *s >> S; - QVERIFY(S.isNull()); - *s >> S; - QCOMPARE(S, test); - *s >> S; - QVERIFY(S.isEmpty()); - *s >> S; - QCOMPARE(S, test); - *s >> S; - QCOMPARE(S, QString("nonempty")); - *s >> S; - QCOMPARE(S, test); -} - -// ************************************ - -static QRegExp QRegExpData(int index) -{ - switch (index) { - case 0: return QRegExp(); - case 1: return QRegExp(""); - case 2: return QRegExp("A", Qt::CaseInsensitive); - case 3: return QRegExp("ABCDE FGHI", Qt::CaseSensitive, QRegExp::Wildcard); - case 4: return QRegExp("This is a long string", Qt::CaseInsensitive, QRegExp::FixedString); - case 5: return QRegExp("And again a string with a \nCRLF", Qt::CaseInsensitive, QRegExp::RegExp); - case 6: - { - QRegExp rx("abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRESTUVWXYZ 1234567890 ~`!@#$%^&*()_-+={[}]|\\:;\"'<,>.?/"); - rx.setMinimal(true); - return rx; - } - } - return QRegExp("foo"); -} -#define MAX_QREGEXP_DATA 7 - -void tst_QDataStream::stream_QRegExp_data() -{ - stream_data(MAX_QREGEXP_DATA); -} - -void tst_QDataStream::stream_QRegExp() -{ - STREAM_IMPL(QRegExp); -} - -void tst_QDataStream::writeQRegExp(QDataStream* s) -{ - QRegExp test(QRegExpData(dataIndex(QTest::currentDataTag()))); - *s << test; - *s << QString("Her er det noe tekst"); - *s << test; - *s << QString("nonempty"); - *s << test; - *s << QVariant(test); -} - -void tst_QDataStream::readQRegExp(QDataStream *s) -{ - QRegExp R; - QString S; - QVariant V; - QRegExp test(QRegExpData(dataIndex(QTest::currentDataTag()))); - - *s >> R; - QCOMPARE(R, test); - *s >> S; - QCOMPARE(S, QString("Her er det noe tekst")); - *s >> R; - QCOMPARE(R, test); - *s >> S; - QCOMPARE(S, QString("nonempty")); - *s >> R; - QCOMPARE(R, test); - *s >> V; - QCOMPARE(V.type(), QVariant::RegExp); - QCOMPARE(V.toRegExp(), test); -} - -// ************************************ - -typedef QMap Map; - -static Map MapData(int index) -{ - Map map; - - switch (index) { - case 0: - default: - break; - case 1: - map.insert(1, "a"); - map.insert(2, "bbb"); - map.insert(3, "cccccc"); - break; - case 2: - map.insert(1, "a"); - map.insert(2, "one"); - map.insertMulti(2, "two"); - map.insertMulti(2, "three"); - map.insert(3, "cccccc"); - } - return map; -} -#define MAX_MAP_DATA 3 - -void tst_QDataStream::stream_Map_data() -{ - stream_data(MAX_MAP_DATA); -} - -void tst_QDataStream::stream_Map() -{ - STREAM_IMPL(Map); -} - -void tst_QDataStream::writeMap(QDataStream* s) -{ - Map test(MapData(dataIndex(QTest::currentDataTag()))); - *s << test; - *s << test; -} - -void tst_QDataStream::readMap(QDataStream *s) -{ - Map S; - Map test(MapData(dataIndex(QTest::currentDataTag()))); - - *s >> S; - QCOMPARE(S, test); - *s >> S; - QCOMPARE(S, test); -} - -// ************************************ - -typedef QHash Hash; - -static Hash HashData(int index) -{ - Hash map; - - switch (index) { - case 0: - default: - break; - case 1: - map.insert(1, "a"); - map.insert(2, "bbb"); - map.insert(3, "cccccc"); - break; - case 2: - map.insert(1, "a"); - map.insert(2, "one"); - map.insertMulti(2, "two"); - map.insertMulti(2, "three"); - map.insert(3, "cccccc"); - } - return map; -} -#define MAX_HASH_DATA 3 - -void tst_QDataStream::stream_Hash_data() -{ - stream_data(MAX_HASH_DATA); -} - -void tst_QDataStream::stream_Hash() -{ - STREAM_IMPL(Hash); -} - -void tst_QDataStream::writeHash(QDataStream* s) -{ - Hash test(HashData(dataIndex(QTest::currentDataTag()))); - *s << test; - *s << test; -} - -void tst_QDataStream::readHash(QDataStream *s) -{ - Hash S; - Hash test(HashData(dataIndex(QTest::currentDataTag()))); - - *s >> S; - QCOMPARE(S, test); - *s >> S; - QCOMPARE(S, test); -} - -// ************************************ - -static QEasingCurve QEasingCurveData(int index) -{ - QEasingCurve easing; - - switch (index) { - case 0: - default: - break; - case 1: - easing.setType(QEasingCurve::Linear); - break; - case 2: - easing.setType(QEasingCurve::OutCubic); - break; - case 3: - easing.setType(QEasingCurve::InOutSine); - break; - case 4: - easing.setType(QEasingCurve::InOutElastic); - easing.setPeriod(1.5); - easing.setAmplitude(2.0); - break; - case 5: - easing.setType(QEasingCurve::OutInBack); - break; - case 6: - easing.setType(QEasingCurve::OutCurve); - break; - case 7: - easing.setType(QEasingCurve::InOutBack); - easing.setOvershoot(0.5); - break; - } - return easing; -} -#define MAX_EASING_DATA 8 - -void tst_QDataStream::stream_QEasingCurve_data() -{ - stream_data(MAX_EASING_DATA); -} - -void tst_QDataStream::stream_QEasingCurve() -{ - STREAM_IMPL(QEasingCurve); -} - -void tst_QDataStream::writeQEasingCurve(QDataStream* s) -{ - QEasingCurve test(QEasingCurveData(dataIndex(QTest::currentDataTag()))); - *s << test; -} - -void tst_QDataStream::readQEasingCurve(QDataStream *s) -{ - QEasingCurve S; - QEasingCurve expected(QEasingCurveData(dataIndex(QTest::currentDataTag()))); - - *s >> S; - QCOMPARE(S, expected); -} - -// ************************************ - -// contains some quint64 testing as well - -#define MAX_qint64_DATA 4 - -static qint64 qint64Data(int index) -{ - switch (index) { - case 0: return qint64(0); - case 1: return qint64(1); - case 2: return qint64(-1); - case 3: return qint64(1) << 40; - case MAX_qint64_DATA: return -(qint64(1) << 40); - } - - return -1; -} - -void tst_QDataStream::stream_qint64_data() -{ - stream_data(MAX_qint64_DATA+1); -} - -void tst_QDataStream::stream_qint64() -{ - STREAM_IMPL(qint64); -} - -void tst_QDataStream::writeqint64(QDataStream* s) -{ - qint64 test = qint64Data(dataIndex(QTest::currentDataTag())); - *s << test; - *s << int(1); - *s << (quint64)test; -} - -void tst_QDataStream::readqint64(QDataStream *s) -{ - qint64 test = qint64Data(dataIndex(QTest::currentDataTag())); - qint64 i64; - quint64 ui64; - int i; - *s >> i64; - QCOMPARE(i64, test); - *s >> i; - QCOMPARE(i, int(1)); - *s >> ui64; - QCOMPARE(ui64, (quint64)test); -} - -// ************************************ - -static bool boolData(int index) -{ - switch (index) { - case 0: return true; - case 1: return false; - case 2: return bool(2); - case 3: return bool(-1); - case 4: return bool(127); - } - - return false; -} - -void tst_QDataStream::stream_bool_data() -{ - stream_data(5); -} - -void tst_QDataStream::stream_bool() -{ - STREAM_IMPL(bool); -} - -void tst_QDataStream::writebool(QDataStream *s) -{ - bool d1 = boolData(dataIndex(QTest::currentDataTag())); - *s << d1; -} - -void tst_QDataStream::readbool(QDataStream *s) -{ - bool expected = boolData(dataIndex(QTest::currentDataTag())); - - bool d1; - *s >> d1; - QCOMPARE(d1, expected); -} - -// ************************************ - -static void QBitArrayData(QBitArray *b, int index) -{ - QString filler = ""; - switch (index) { - case 0: filler = ""; break; - case 1: filler = ""; break; - case 2: filler = "0"; break; - case 3: filler = "1"; break; - case 4: filler = "0000"; break; - case 5: filler = "0001"; break; - case 6: filler = "0010"; break; - case 7: filler = "0100"; break; - case 8: filler = "1000"; break; - case 9: filler = "1111"; break; - case 10: filler = "00000000"; break; - case 11: filler = "00000001"; break; - case 12: filler = "11111111"; break; - case 13: filler = "000000001"; break; - case 14: filler = "000000000001"; break; - case 15: filler = "0000000000000001"; break; - case 16: filler = "0101010101010101010101010101010101010101010101010101010101010101"; break; - case 17: filler = "1010101010101010101010101010101010101010101010101010101010101010"; break; - case 18: filler = "1111111111111111111111111111111111111111111111111111111111111111"; break; - } - - b->resize(filler.length()); - b->fill(0); // reset all bits to zero - - for (int i = 0; i < filler.length(); ++i) { - if (filler.at(i) == '1') - b->setBit(i, true); - } -} - -void tst_QDataStream::stream_QBitArray_data() -{ - stream_data(19); -} - -void tst_QDataStream::stream_QBitArray() -{ - STREAM_IMPL(QBitArray); -} - -void tst_QDataStream::writeQBitArray(QDataStream *s) -{ - QBitArray d1; - QBitArrayData(&d1, dataIndex(QTest::currentDataTag())); - *s << d1; -} - -void tst_QDataStream::readQBitArray(QDataStream *s) -{ - QBitArray expected; - QBitArrayData(&expected, dataIndex(QTest::currentDataTag())); - - QBitArray d1; - *s >> d1; - QCOMPARE(d1, expected); -} - -// ************************************ - -static QBrush qBrushData(int index) -{ - switch (index) { - case 0: return QBrush(Qt::NoBrush); - case 1: return QBrush(Qt::SolidPattern); - case 2: return QBrush(Qt::Dense7Pattern); - case 3: return QBrush(Qt::red, Qt::NoBrush); - case 4: return QBrush(Qt::green, Qt::SolidPattern); - case 5: return QBrush(Qt::blue, Qt::Dense7Pattern); - case 6: - { - QPixmap pm(open_xpm); - QBrush custom(Qt::black, pm); - return custom; - } - case 7: - QLinearGradient gradient(QPointF(2.718, 3.142), QPointF(3.1337, 42)); - gradient.setCoordinateMode(QGradient::ObjectBoundingMode); - gradient.setSpread(QGradient::ReflectSpread); - gradient.setInterpolationMode(QGradient::ComponentInterpolation); - gradient.setColorAt(0.2, Qt::red); - gradient.setColorAt(0.6, Qt::transparent); - gradient.setColorAt(0.8, Qt::blue); - return QBrush(gradient); - } - - return QBrush(Qt::NoBrush); -} - -void tst_QDataStream::stream_QBrush_data() -{ - stream_data(8); -} - -void tst_QDataStream::stream_QBrush() -{ - if (QString(QTest::currentDataTag()).endsWith("6")) - QSKIP("Custom brushes don't seem to be supported with QDataStream"); - - STREAM_IMPL(QBrush); -} - -void tst_QDataStream::writeQBrush(QDataStream *s) -{ - QBrush brush = qBrushData(dataIndex(QTest::currentDataTag())); - *s << brush; -} - -void tst_QDataStream::readQBrush(QDataStream *s) -{ - QBrush d2; - *s >> d2; - - QBrush brush = qBrushData(dataIndex(QTest::currentDataTag())); - QCOMPARE(d2, brush); -} - -// ************************************ - -static QColor QColorData(int index) -{ - switch (index) { - case 0: return QColor(0,0,0); - case 1: return QColor(0,0,0); - case 2: return QColor(0,0,0); - case 3: return QColor(0,0,0); - case 4: return QColor(0,0,0); - case 5: return QColor(0,0,0); - case 6: return QColor(0,0,0); - case 7: return QColor(0,0,0); - } - - return QColor(0,0,0); -} - -void tst_QDataStream::stream_QColor_data() -{ - stream_data(8); -} - -void tst_QDataStream::stream_QColor() -{ - STREAM_IMPL(QColor); -} - -void tst_QDataStream::writeQColor(QDataStream *s) -{ - QColor d3(QColorData(dataIndex(QTest::currentDataTag()))); - *s << d3; -} - -void tst_QDataStream::readQColor(QDataStream *s) -{ - QColor test(QColorData(dataIndex(QTest::currentDataTag()))); - QColor d3; - *s >> d3; - QCOMPARE(d3, test); -} - - -// ************************************ - -static QByteArray qByteArrayData(int index) -{ - switch (index) { - case 0: return QByteArray(); - case 1: return QByteArray(""); - case 2: return QByteArray("foo"); - case 3: return QByteArray("foo bar"); - case 4: return QByteArray("two\nlines"); - case 5: return QByteArray("ABCDEFG"); - case 6: return QByteArray("baec zxv 123"); // kept for nostalgic reasons - case 7: return QByteArray("jbc;UBC;jd clhdbcahd vcbd vgdv dhvb laifv kadf jkhfbvljd khd lhvjh "); - } - - return QByteArray("foo"); -} - -void tst_QDataStream::stream_QByteArray_data() -{ - stream_data(8); -} - -void tst_QDataStream::stream_QByteArray() -{ - STREAM_IMPL(QByteArray); -} - -void tst_QDataStream::writeQByteArray(QDataStream *s) -{ - QByteArray d4(qByteArrayData(dataIndex(QTest::currentDataTag()))); - *s << d4; -} - -void tst_QDataStream::writenullptr_t(QDataStream *s) -{ - *s << nullptr; -} - -void tst_QDataStream::readQByteArray(QDataStream *s) -{ - QByteArray test(qByteArrayData(dataIndex(QTest::currentDataTag()))); - QByteArray d4; - *s >> d4; - QCOMPARE(d4, test); -} - -void tst_QDataStream::readnullptr_t(QDataStream *s) -{ - std::nullptr_t ptr; - *s >> ptr; - QCOMPARE(ptr, nullptr); -} - -// ************************************ -#ifndef QT_NO_CURSOR -static QCursor qCursorData(int index) -{ - switch (index) { - case 0: return QCursor(Qt::ArrowCursor); - case 1: return QCursor(Qt::WaitCursor); - case 2: return QCursor(Qt::BitmapCursor); - case 3: return QCursor(Qt::BlankCursor); - case 4: return QCursor(Qt::BlankCursor); - case 5: return QCursor(QPixmap(open_xpm), 1, 1); - case 6: { QPixmap pm(open_xpm); return QCursor(QBitmap(pm), pm.mask(), 3, 4); } - case 7: return QCursor(QPixmap(open_xpm), -1, 5); - case 8: return QCursor(QPixmap(open_xpm), 5, -1); - } - - return QCursor(); -} -#endif - -#ifndef QT_NO_CURSOR -void tst_QDataStream::stream_QCursor_data() -{ - stream_data(9); -} -#endif - -#ifndef QT_NO_CURSOR -void tst_QDataStream::stream_QCursor() -{ - STREAM_IMPL(QCursor); -} -#endif - -#ifndef QT_NO_CURSOR -void tst_QDataStream::writeQCursor(QDataStream *s) -{ - QCursor d5(qCursorData(dataIndex(QTest::currentDataTag()))); - *s << d5; -} -#endif - -#ifndef QT_NO_CURSOR -void tst_QDataStream::readQCursor(QDataStream *s) -{ - QCursor test(qCursorData(dataIndex(QTest::currentDataTag()))); - QCursor d5; - *s >> d5; - - QVERIFY(d5.shape() == test.shape()); //## lacks operator== - QCOMPARE(d5.hotSpot(), test.hotSpot()); - QVERIFY((d5.bitmap() != 0 && test.bitmap() != 0) || (d5.bitmap() == 0 && test.bitmap() == 0)); - if (d5.bitmap() != 0) { - QPixmap actual = *(d5.bitmap()); - QPixmap expected = *(test.bitmap()); - QCOMPARE(actual, expected); - } - QVERIFY((d5.mask() != 0 && test.mask() != 0) || (d5.mask() == 0 && test.mask() == 0)); - if (d5.mask() != 0) { - QPixmap actual = *(d5.mask()); - QPixmap expected = *(test.mask()); - QCOMPARE(actual, expected); - } -} -#endif - -// ************************************ - -static QDate qDateData(int index) -{ - switch (index) { - case 0: return QDate(1752, 9, 14); // the first valid date - case 1: return QDate(1900, 1, 1); - case 2: return QDate(1976, 4, 5); - case 3: return QDate(1960, 5, 27); - case 4: return QDate(1999, 12, 31); // w2k effects? - case 5: return QDate(2000, 1, 1); - case 6: return QDate(2050, 1, 1);// test some values far in the future too - case 7: return QDate(3001, 12, 31); - case 8: return QDate(4002, 1, 1); - case 9: return QDate(4003, 12, 31); - case 10: return QDate(5004, 1, 1); - case 11: return QDate(5005, 12, 31); - case 12: return QDate(6006, 1, 1); - case 13: return QDate(6007, 12, 31); - case 14: return QDate(7008, 1, 1); - case 15: return QDate(7009, 12, 31); - } - return QDate(); -} -#define MAX_QDATE_DATA 16 - -void tst_QDataStream::stream_QDate_data() -{ - stream_data(MAX_QDATE_DATA); -} - -void tst_QDataStream::stream_QDate() -{ - STREAM_IMPL(QDate); -} - -void tst_QDataStream::writeQDate(QDataStream *s) -{ - QDate d6(qDateData(dataIndex(QTest::currentDataTag()))); - *s << d6; -} - -void tst_QDataStream::readQDate(QDataStream *s) -{ - QDate test(qDateData(dataIndex(QTest::currentDataTag()))); - QDate d6; - *s >> d6; - QCOMPARE(d6, test); -} - -// ************************************ - -static QTime qTimeData(int index) -{ - switch (index) { - case 0 : return QTime(0, 0, 0, 0); - case 1 : return QTime(0, 0, 0, 1); - case 2 : return QTime(0, 0, 0, 99); - case 3 : return QTime(0, 0, 0, 100); - case 4 : return QTime(0, 0, 0, 999); - case 5 : return QTime(0, 0, 1, 0); - case 6 : return QTime(0, 0, 1, 1); - case 7 : return QTime(0, 0, 1, 99); - case 8 : return QTime(0, 0, 1, 100); - case 9 : return QTime(0, 0, 1, 999); - case 10: return QTime(0, 0, 59, 0); - case 11: return QTime(0, 0, 59, 1); - case 12: return QTime(0, 0, 59, 99); - case 13: return QTime(0, 0, 59, 100); - case 14: return QTime(0, 0, 59, 999); - case 15: return QTime(0, 59, 0, 0); - case 16: return QTime(0, 59, 0, 1); - case 17: return QTime(0, 59, 0, 99); - case 18: return QTime(0, 59, 0, 100); - case 19: return QTime(0, 59, 0, 999); - case 20: return QTime(0, 59, 1, 0); - case 21: return QTime(0, 59, 1, 1); - case 22: return QTime(0, 59, 1, 99); - case 23: return QTime(0, 59, 1, 100); - case 24: return QTime(0, 59, 1, 999); - case 25: return QTime(0, 59, 59, 0); - case 26: return QTime(0, 59, 59, 1); - case 27: return QTime(0, 59, 59, 99); - case 28: return QTime(0, 59, 59, 100); - case 29: return QTime(0, 59, 59, 999); - case 30: return QTime(23, 0, 0, 0); - case 31: return QTime(23, 0, 0, 1); - case 32: return QTime(23, 0, 0, 99); - case 33: return QTime(23, 0, 0, 100); - case 34: return QTime(23, 0, 0, 999); - case 35: return QTime(23, 0, 1, 0); - case 36: return QTime(23, 0, 1, 1); - case 37: return QTime(23, 0, 1, 99); - case 38: return QTime(23, 0, 1, 100); - case 39: return QTime(23, 0, 1, 999); - case 40: return QTime(23, 0, 59, 0); - case 41: return QTime(23, 0, 59, 1); - case 42: return QTime(23, 0, 59, 99); - case 43: return QTime(23, 0, 59, 100); - case 44: return QTime(23, 0, 59, 999); - case 45: return QTime(23, 59, 0, 0); - case 46: return QTime(23, 59, 0, 1); - case 47: return QTime(23, 59, 0, 99); - case 48: return QTime(23, 59, 0, 100); - case 49: return QTime(23, 59, 0, 999); - case 50: return QTime(23, 59, 1, 0); - case 51: return QTime(23, 59, 1, 1); - case 52: return QTime(23, 59, 1, 99); - case 53: return QTime(23, 59, 1, 100); - case 54: return QTime(23, 59, 1, 999); - case 55: return QTime(23, 59, 59, 0); - case 56: return QTime(23, 59, 59, 1); - case 57: return QTime(23, 59, 59, 99); - case 58: return QTime(23, 59, 59, 100); - case 59: return QTime(23, 59, 59, 999); - case 60: return QTime(); - } - return QTime(0, 0, 0); -} -#define MAX_QTIME_DATA 61 - -void tst_QDataStream::stream_QTime_data() -{ - stream_data(MAX_QTIME_DATA); -} - -void tst_QDataStream::stream_QTime() -{ - STREAM_IMPL(QTime); -} - -void tst_QDataStream::writeQTime(QDataStream *s) -{ - QTime d7 = qTimeData(dataIndex(QTest::currentDataTag())); - *s << d7; -} - -void tst_QDataStream::readQTime(QDataStream *s) -{ - QTime test = qTimeData(dataIndex(QTest::currentDataTag())); - QTime d7; - *s >> d7; - QCOMPARE(d7, test); -} - -// ************************************ - -static QDateTime qDateTimeData(int index) -{ - switch (index) { - case 0: return QDateTime(QDate(1900, 1, 1), QTime(0,0,0,0)); - case 1: return QDateTime(QDate(1900, 1, 2), QTime(1,1,1,1)); - case 2: return QDateTime(QDate(1900, 1, 3), QTime(12,0,0,0)); - case 3: return QDateTime(QDate(1900, 1, 4), QTime(23,59,59,999)); - case 4: return QDateTime(QDate(1999, 1, 1), QTime(0,0,0,0)); - case 5: return QDateTime(QDate(1999, 1, 2), QTime(1,1,1,1)); - case 6: return QDateTime(QDate(1999, 1, 3), QTime(12,0,0,0)); - case 7: return QDateTime(QDate(1999, 1, 4), QTime(23,59,59,999)); - case 8: return QDateTime(QDate(2000, 1, 1), QTime(0,0,0,0)); - case 9: return QDateTime(QDate(2000, 1, 2), QTime(1,1,1,1)); - case 10: return QDateTime(QDate(2000, 1, 3), QTime(12,0,0,0)); - case 11: return QDateTime(QDate(2000, 1, 4), QTime(23,59,59,999)); - case 12: return QDateTime(QDate(2000, 12, 31), QTime(0,0,0,0)); - case 13: return QDateTime(QDate(2000, 12, 31), QTime(1,1,1,1)); - case 14: return QDateTime(QDate(2000, 12, 31), QTime(12,0,0,0)); - case 15: return QDateTime(QDate(2000, 12, 31), QTime(23,59,59,999)); - } - return QDateTime(QDate(1900, 1, 1), QTime(0,0,0)); -} -#define MAX_QDATETIME_DATA 16 - -void tst_QDataStream::stream_QDateTime_data() -{ - stream_data(MAX_QDATETIME_DATA); -} - -void tst_QDataStream::stream_QDateTime() -{ - STREAM_IMPL(QDateTime); -} - -void tst_QDataStream::stream_nullptr_t_data() -{ - stream_data(1); // there's only one value possible -} - -void tst_QDataStream::stream_nullptr_t() -{ - using namespace std; - STREAM_IMPL(nullptr_t); -} - -void tst_QDataStream::writeQDateTime(QDataStream *s) -{ - QDateTime dt(qDateTimeData(dataIndex(QTest::currentDataTag()))); - *s << dt; -} - -void tst_QDataStream::readQDateTime(QDataStream *s) -{ - QDateTime test(qDateTimeData(dataIndex(QTest::currentDataTag()))); - QDateTime d8; - *s >> d8; - QCOMPARE(d8, test); -} - -// ************************************ - -static QFont qFontData(int index) -{ - switch (index) { - case 0: return QFont("Courier", 20, QFont::Bold, true); - case 1: return QFont("Courier", 18, QFont::Bold, false); - case 2: return QFont("Courier", 16, QFont::Light, true); - case 3: return QFont("Courier", 14, QFont::Normal, false); - case 4: return QFont("Courier", 12, QFont::DemiBold, true); - case 5: return QFont("Courier", 10, QFont::Black, false); - case 6: - { - QFont f("Helvetica", 10, QFont::Normal, false); - f.setPixelSize(2); - f.setUnderline(false); - f.setStrikeOut(false); - f.setFixedPitch(false); - return f; - } - case 7: - { - QFont f("Helvetica", 10, QFont::Bold, false); - f.setPixelSize(4); - f.setUnderline(true); - f.setStrikeOut(false); - f.setFixedPitch(false); - return f; - } - case 8: - { - QFont f("Helvetica", 10, QFont::Light, false); - f.setPixelSize(6); - f.setUnderline(false); - f.setStrikeOut(true); - f.setFixedPitch(false); - return f; - } - case 9: - { - QFont f("Helvetica", 10, QFont::DemiBold, false); - f.setPixelSize(8); - f.setUnderline(false); - f.setStrikeOut(false); - f.setFixedPitch(true); - return f; - } - case 10: - { - QFont f("Helvetica", 10, QFont::Black, false); - f.setPixelSize(10); - f.setUnderline(true); - f.setStrikeOut(true); - f.setFixedPitch(false); - return f; - } - case 11: - { - QFont f("Helvetica", 10, QFont::Normal, true); - f.setPixelSize(12); - f.setUnderline(false); - f.setStrikeOut(true); - f.setFixedPitch(true); - return f; - } - case 12: - { - QFont f("Helvetica", 10, QFont::Bold, true); - f.setPixelSize(14); - f.setUnderline(true); - f.setStrikeOut(true); - f.setFixedPitch(true); - return f; - } - case 13: - { - QFont f("Helvetica", 10, QFont::Bold, true); - f.setStretch(200); - return f; - } - } - return QFont("Courier", 18, QFont::Bold, true); -} -#define MAX_QFONT_DATA 14 - -void tst_QDataStream::stream_QFont_data() -{ - stream_data(MAX_QFONT_DATA); -} - -void tst_QDataStream::stream_QFont() -{ - STREAM_IMPL(QFont); -} - -void tst_QDataStream::writeQFont(QDataStream *s) -{ - QFont d9(qFontData(dataIndex(QTest::currentDataTag()))); - *s << d9; -} - -void tst_QDataStream::readQFont(QDataStream *s) -{ - QFont test(qFontData(dataIndex(QTest::currentDataTag()))); - QFont d9; - *s >> d9; - - // maybe a bit overkill ... - QCOMPARE(d9.family(), test.family()); - QCOMPARE(d9.pointSize(), test.pointSize()); - QCOMPARE(d9.pixelSize(), test.pixelSize()); - QCOMPARE(d9.weight(), test.weight()); - QCOMPARE(d9.bold(), test.bold()); - QCOMPARE(d9.italic(), test.italic()); - QCOMPARE(d9.underline(), test.underline()); - QCOMPARE(d9.overline(), test.overline()); - QCOMPARE(d9.strikeOut(), test.strikeOut()); - QCOMPARE(d9.fixedPitch(), test.fixedPitch()); - QCOMPARE(d9.styleHint(), test.styleHint()); - QCOMPARE(d9.toString(), test.toString()); - - QCOMPARE(d9, test); -} - -// ************************************ - -void tst_QDataStream::stream_QImage_data() -{ - stream_data(1); -} - -void tst_QDataStream::stream_QImage() -{ - STREAM_IMPL(QImage); -} - -void tst_QDataStream::writeQImage(QDataStream *s) -{ - QImage d12(open_xpm); - *s << d12; -} - -void tst_QDataStream::readQImage(QDataStream *s) -{ - QImage ref(open_xpm); - - QImage d12; - *s >> d12; - QCOMPARE(d12, ref); - - // do some extra neurotic tests - QCOMPARE(d12.size(), ref.size()); - QCOMPARE(d12.isNull(), ref.isNull()); - QCOMPARE(d12.width(), ref.width()); - QCOMPARE(d12.height(), ref.height()); - QCOMPARE(d12.depth(), ref.depth()); - QCOMPARE(d12.colorCount(), ref.colorCount()); - QCOMPARE(d12.hasAlphaChannel(), ref.hasAlphaChannel()); -} - -// ************************************ - -static QPen qPenData(int index) -{ - switch (index) { - case 0: - { - QPen p(Qt::blue, 0, Qt::NoPen); - p.setCapStyle(Qt::FlatCap); - p.setJoinStyle(Qt::MiterJoin); - return p; - } - case 1: - { - QPen p(Qt::red, 1, Qt::SolidLine); - p.setCapStyle(Qt::SquareCap); - p.setJoinStyle(Qt::BevelJoin); - return p; - } - case 2: - { - QPen p(Qt::red, 4, Qt::DashDotDotLine); - p.setCapStyle(Qt::RoundCap); - p.setJoinStyle(Qt::RoundJoin); - return p; - } - case 3: - { - QPen p(Qt::blue, 12, Qt::NoPen); - p.setCapStyle(Qt::FlatCap); - p.setJoinStyle(Qt::RoundJoin); - return p; - } - case 4: - { - QPen p(Qt::red, 99, Qt::SolidLine); - p.setCapStyle(Qt::SquareCap); - p.setJoinStyle(Qt::MiterJoin); - return p; - } - case 5: - { - QPen p(Qt::red, 255, Qt::DashDotLine); - p.setCapStyle(Qt::RoundCap); - p.setJoinStyle(Qt::BevelJoin); - return p; - } - case 6: - { - QPen p(Qt::red, 256, Qt::DashDotLine); - p.setCapStyle(Qt::RoundCap); - p.setJoinStyle(Qt::BevelJoin); - return p; - } - case 7: - { - QPen p(Qt::red, 0.25, Qt::DashDotLine); - p.setCapStyle(Qt::RoundCap); - p.setJoinStyle(Qt::BevelJoin); - return p; - } - } - - return QPen(); -} -#define MAX_QPEN_DATA 8 - -void tst_QDataStream::stream_QPen_data() -{ - stream_data(MAX_QPEN_DATA); -} - -void tst_QDataStream::stream_QPen() -{ - STREAM_IMPL(QPen); -} - -void tst_QDataStream::writeQPen(QDataStream *s) -{ - QPen d15(qPenData(dataIndex(QTest::currentDataTag()))); - *s << d15; -} - -void tst_QDataStream::readQPen(QDataStream *s) -{ - QPen origPen(qPenData(dataIndex(QTest::currentDataTag()))); - QPen d15; - *s >> d15; - QCOMPARE(d15.style(), origPen.style()); - QCOMPARE(d15.width(), origPen.width()); - QCOMPARE(d15.color(), origPen.color()); - QCOMPARE(d15.capStyle(), origPen.capStyle()); - QCOMPARE(d15.joinStyle(), origPen.joinStyle()); - QCOMPARE(d15, origPen); -} - -// ************************************ - -// pixmap testing is currently limited to one pixmap only. -// -void tst_QDataStream::stream_QPixmap_data() -{ - stream_data(1); -} - -void tst_QDataStream::stream_QPixmap() -{ - STREAM_IMPL(QPixmap); -} - -void tst_QDataStream::stream_QIcon_data() -{ - stream_data(1); -} - -void tst_QDataStream::stream_QIcon() -{ - STREAM_IMPL(QIcon); -} - -void tst_QDataStream::writeQPixmap(QDataStream *s) -{ - QPixmap d16(open_xpm); - *s << d16; -} - -void tst_QDataStream::readQPixmap(QDataStream *s) -{ - QPixmap pm(open_xpm); - QPixmap d16; - *s >> d16; - QVERIFY(!d16.isNull() && !pm.isNull()); - QCOMPARE(d16.width(), pm.width()); - QCOMPARE(d16.height(), pm.height()); - QCOMPARE(d16.size(), pm.size()); - QCOMPARE(d16.rect(), pm.rect()); - QCOMPARE(d16.depth(), pm.depth()); -} - -void tst_QDataStream::writeQIcon(QDataStream *s) -{ - QPixmap pm(open_xpm); - QIcon d16(pm); - *s << d16; -} - -void tst_QDataStream::readQIcon(QDataStream *s) -{ - QPixmap pm(open_xpm); - QIcon icon(pm); - QIcon d16; - *s >> d16; - QVERIFY(!d16.isNull() && !icon.isNull()); - QCOMPARE(d16.pixmap(100), pm); -} - -// ************************************ - -QPoint qPointData(int index) -{ - switch (index) { - case 0: return QPoint(0, 0); - case 1: return QPoint(-1, 0); - case 2: return QPoint(0, -1); - case 3: return QPoint(1, 0); - case 4: return QPoint(0, 1); - case 5: return QPoint(-1, -1); - case 6: return QPoint(1, 1); - case 7: return QPoint(255, 255); - case 8: return QPoint(256, 256); - case 9: return QPoint(-254, -254); - case 10: return QPoint(-255, -255); - } - - return QPoint(); -} -#define MAX_QPOINT_DATA 11 - - -void tst_QDataStream::stream_QPoint_data() -{ - stream_data(MAX_QPOINT_DATA); -} - -void tst_QDataStream::stream_QPoint() -{ - STREAM_IMPL(QPoint); -} - -void tst_QDataStream::writeQPoint(QDataStream *s) -{ - QPoint d17(qPointData(dataIndex(QTest::currentDataTag()))); - *s << d17; - - QPointF d17f = d17; - *s << d17f; -} - -void tst_QDataStream::readQPoint(QDataStream *s) -{ - QPoint ref(qPointData(dataIndex(QTest::currentDataTag()))); - QPoint d17; - *s >> d17; - QCOMPARE(d17, ref); - - QPointF d17f; - *s >> d17f; - QCOMPARE(d17f, QPointF(ref)); -} - -// ************************************ - -static QRect qRectData(int index) -{ - switch (index) { - case 0: return QRect(0, 0, 0, 0); - case 1: return QRect(1, 1, 1, 1); - case 2: return QRect(1, 2, 3, 4); - case 3: return QRect(-1, -1, -1, -1); - case 4: return QRect(-1, -2, -3, -4); - case 5: return QRect(255, -5, 256, -6); - case 6: return QRect(-7, 255, -8, 256); - case 7: return QRect(9, -255, 10, -255); - case 8: return QRect(-255, 11, -255, 12); - case 9: return QRect(256, 512, 1024, 2048); - case 10: return QRect(-256, -512, -1024, -2048); - } - return QRect(); -} -#define MAX_QRECT_DATA 11 - -void tst_QDataStream::stream_QRect_data() -{ - stream_data(MAX_QRECT_DATA); -} - -void tst_QDataStream::stream_QRect() -{ - STREAM_IMPL(QRect); -} - -void tst_QDataStream::writeQRect(QDataStream *s) -{ - QRect d18(qRectData(dataIndex(QTest::currentDataTag()))); - *s << d18; - - QRectF d18f(d18); - *s << d18f; -} - -void tst_QDataStream::readQRect(QDataStream *s) -{ - QRect ref(qRectData(dataIndex(QTest::currentDataTag()))); - QRect d18; - *s >> d18; - QCOMPARE(d18, ref); - - QRectF d18f; - *s >> d18f; - QCOMPARE(d18f, QRectF(ref)); -} - -// ************************************ - -static QPolygon qPolygonData(int index) -{ - QPoint p0(0, 0); - QPoint p1(1, 1); - QPoint p2(-1, -1); - QPoint p3(1, -1); - QPoint p4(-1, 1); - QPoint p5(0, 255); - QPoint p6(0, 256); - QPoint p7(0, 1024); - QPoint p8(255, 0); - QPoint p9(256, 0); - QPoint p10(1024, 0); - QPoint p11(345, 678); - QPoint p12(23456, 99999); - QPoint p13(-99998, -34567); - QPoint p14(45678, -99999); - - switch (index) { - case 0: - return QPolygon(0); - case 1: - { - QPolygon p(1); - p.setPoint(0, p0); - return p; - } - case 2: - { - QPolygon p(1); - p.setPoint(0, p5); - return p; - } - case 3: - { - QPolygon p(1); - p.setPoint(0, p12); - return p; - } - case 4: - { - QPolygon p(3); - p.setPoint(0, p1); - p.setPoint(1, p10); - p.setPoint(2, p13); - return p; - } - case 5: - { - QPolygon p(6); - p.setPoint(0, p2); - p.setPoint(1, p11); - p.setPoint(2, p14); - return p; - } - case 6: - { - QPolygon p(15); - p.setPoint(0, p0); - p.setPoint(1, p1); - p.setPoint(2, p2); - p.setPoint(3, p3); - p.setPoint(4, p4); - p.setPoint(5, p5); - p.setPoint(6, p6); - p.setPoint(7, p7); - p.setPoint(8, p8); - p.setPoint(9, p9); - p.setPoint(10, p10); - p.setPoint(11, p11); - p.setPoint(12, p12); - p.setPoint(13, p13); - p.setPoint(14, p14); - return p; - } - } - return QRect(); -} -#define MAX_QPOINTARRAY_DATA 7 - -void tst_QDataStream::stream_QPolygon_data() -{ - stream_data(1); -} - -void tst_QDataStream::stream_QPolygon() -{ - STREAM_IMPL(QPolygon); -} - -void tst_QDataStream::writeQPolygon(QDataStream *s) -{ - QPolygon d19(qPolygonData(dataIndex(QTest::currentDataTag()))); - *s << d19; - - QPolygonF d19f(d19); - *s << d19f; -} - -void tst_QDataStream::readQPolygon(QDataStream *s) -{ - QPolygon ref(qPolygonData(dataIndex(QTest::currentDataTag()))); - QPolygon d19; - *s >> d19; - QCOMPARE(d19, ref); - - QPolygonF d19f; - *s >> d19f; - QCOMPARE(d19f, QPolygonF(ref)); -} - -// ************************************ - -static QRegion qRegionData(int index) -{ - switch (index) { - case 0: return QRegion(0, 0, 0, 0, QRegion::Rectangle); - case 1: - { - QRegion r(1, 2, 300, 400, QRegion::Rectangle); - if (r != QRegion(1, 2, 300, 400, QRegion::Rectangle)) - qDebug("Error creating a region"); - return r; - } - case 2: return QRegion(100, 100, 1024, 768, QRegion::Rectangle); - case 3: return QRegion(-100, -100, 1024, 1024, QRegion::Rectangle); - case 4: return QRegion(100, -100, 2048, 4096, QRegion::Rectangle); - case 5: return QRegion(-100, 100, 4096, 2048, QRegion::Rectangle); - case 6: return QRegion(0, 0, 0, 0, QRegion::Ellipse); -#if !defined(Q_OS_UNIX) // all our Unix platforms use X regions. - case 7: return QRegion(1, 2, 300, 400, QRegion::Ellipse); - case 8: return QRegion(100, 100, 1024, 768, QRegion::Ellipse); - case 9: return QRegion(-100, -100, 1024, 1024, QRegion::Ellipse); - case 10: return QRegion(100, -100, 2048, 4096, QRegion::Ellipse); - case 11: return QRegion(-100, 100, 4096, 2048, QRegion::Ellipse); - // simplest X11 case that fails: - case 12: return QRegion(0, 0, 3, 3, QRegion::Ellipse); -#else - case 7: - qWarning("Skipping streaming of elliptical regions on embedded, OS X, and X11;" - " our pointarray stuff is not that great at approximating."); -#endif - } - return QRegion(); -} -#define MAX_QREGION_DATA 12 - -void tst_QDataStream::stream_QRegion_data() -{ - stream_data(MAX_QREGION_DATA); -} - -void tst_QDataStream::stream_QRegion() -{ - STREAM_IMPL(QRegion); -} - -void tst_QDataStream::writeQRegion(QDataStream *s) -{ - QRegion r(qRegionData(dataIndex(QTest::currentDataTag()))); - *s << r; -} - -void tst_QDataStream::readQRegion(QDataStream *s) -{ - QRegion ref(qRegionData(dataIndex(QTest::currentDataTag()))); - QRegion r; - *s >> r; - QCOMPARE(r, ref); -} - -// ************************************ - -static QSize qSizeData(int index) -{ - switch (index) { - case 0: return QSize(0, 0); - case 1: return QSize(-1, 0); - case 2: return QSize(0, -1); - case 3: return QSize(1, 0); - case 4: return QSize(0, 1); - case 5: return QSize(-1, -1); - case 6: return QSize(1, 1); - case 7: return QSize(255, 255); - case 8: return QSize(256, 256); - case 9: return QSize(-254, -254); - case 10: return QSize(-255, -255); - } - return QSize(); -} -#define MAX_QSIZE_DATA 11 - -void tst_QDataStream::stream_QSize_data() -{ - stream_data(MAX_QSIZE_DATA); -} - -void tst_QDataStream::stream_QSize() -{ - STREAM_IMPL(QSize); -} - -void tst_QDataStream::writeQSize(QDataStream *s) -{ - QSize d21(qSizeData(dataIndex(QTest::currentDataTag()))); - *s << d21; - - QSizeF d21f(d21); - *s << d21f; -} - -void tst_QDataStream::readQSize(QDataStream *s) -{ - QSize ref(qSizeData(dataIndex(QTest::currentDataTag()))); - QSize d21; - *s >> d21; - QCOMPARE(d21, ref); - - QSizeF d21f; - *s >> d21f; - QCOMPARE(d21f, QSizeF(ref)); -} - -// *********************** atEnd ****************************** - -void tst_QDataStream::stream_atEnd_data() -{ - stream_data(MAX_QSTRING_DATA); -} - -void tst_QDataStream::stream_atEnd() -{ - QFETCH(QString, device); - if (device == "bytearray") { - QByteArray ba; - QDataStream sout(&ba, QIODevice::WriteOnly); - writeQString(&sout); - - QDataStream sin(&ba, QIODevice::ReadOnly); - readQString(&sin); - QVERIFY(sin.atEnd()); - } else if (device == "file") { - QString fileName = "qdatastream.out"; - QFile fOut(fileName); - QVERIFY(fOut.open(QIODevice::WriteOnly)); - QDataStream sout(&fOut); - writeQString(&sout); - fOut.close(); - - QFile fIn(fileName); - QVERIFY(fIn.open(QIODevice::ReadOnly)); - QDataStream sin(&fIn); - readQString(&sin); - QVERIFY(sin.atEnd()); - fIn.close(); - } else if (device == "buffer") { - { - QByteArray ba(0); - QBuffer bOut(&ba); - bOut.open(QIODevice::WriteOnly); - QDataStream sout(&bOut); - writeQString(&sout); - bOut.close(); - - QBuffer bIn(&ba); - bIn.open(QIODevice::ReadOnly); - QDataStream sin(&bIn); - readQString(&sin); - QVERIFY(sin.atEnd()); - bIn.close(); - } - - // Do the same test again, but this time with an initial size for the bytearray. - { - QByteArray ba(10000, '\0'); - QBuffer bOut(&ba); - bOut.open(QIODevice::WriteOnly | QIODevice::Truncate); - QDataStream sout(&bOut); - writeQString(&sout); - bOut.close(); - - QBuffer bIn(&ba); - bIn.open(QIODevice::ReadOnly); - QDataStream sin(&bIn); - readQString(&sin); - QVERIFY(sin.atEnd()); - bIn.close(); - } - } -} - -class FakeBuffer : public QBuffer -{ -protected: - qint64 writeData(const char *c, qint64 i) { return m_lock ? 0 : QBuffer::writeData(c, i); } -public: - FakeBuffer(bool locked = false) : m_lock(locked) {} - void setLocked(bool locked) { m_lock = locked; } -private: - bool m_lock; -}; - -#define TEST_WRITE_ERROR(op) \ - { \ - FakeBuffer fb(false); \ - QVERIFY(fb.open(QBuffer::ReadWrite)); \ - QDataStream fs(&fb); \ - fs.writeRawData("hello", 5); \ - /* first write some initial content */ \ - QCOMPARE(fs.status(), QDataStream::Ok); \ - QCOMPARE(fb.data(), QByteArray("hello")); \ - /* then test that writing can cause an error */ \ - fb.setLocked(true); \ - fs op; \ - QCOMPARE(fs.status(), QDataStream::WriteFailed); \ - QCOMPARE(fb.data(), QByteArray("hello")); \ - /* finally test that writing after an error doesn't change the stream any more */ \ - fb.setLocked(false); \ - fs op; \ - QCOMPARE(fs.status(), QDataStream::WriteFailed); \ - QCOMPARE(fb.data(), QByteArray("hello")); \ - } - -void tst_QDataStream::stream_writeError() -{ - TEST_WRITE_ERROR(<< true) - TEST_WRITE_ERROR(<< (qint8)1) - TEST_WRITE_ERROR(<< (quint8)1) - TEST_WRITE_ERROR(<< (qint16)1) - TEST_WRITE_ERROR(<< (quint16)1) - TEST_WRITE_ERROR(<< (qint32)1) - TEST_WRITE_ERROR(<< (quint32)1) - TEST_WRITE_ERROR(<< (qint64)1) - TEST_WRITE_ERROR(<< (quint64)1) - TEST_WRITE_ERROR(<< "hello") - TEST_WRITE_ERROR(<< (float)1.0) - TEST_WRITE_ERROR(<< (double)1.0) - TEST_WRITE_ERROR(.writeRawData("test", 4)) -} - -void tst_QDataStream::stream_QByteArray2() -{ - QByteArray ba; - { - QDataStream s(&ba, QIODevice::WriteOnly); - s << QByteArray("hallo"); - s << QByteArray(""); - s << QByteArray(); - } - - { - QDataStream s(&ba, QIODevice::ReadOnly); - QByteArray res; - s >> res; - QCOMPARE(res, QByteArray("hallo")); - s >> res; - QCOMPARE(res, QByteArray("")); - QVERIFY(res.isEmpty()); - QVERIFY(!res.isNull()); - s >> res; - QCOMPARE(res, QByteArray()); - QVERIFY(res.isEmpty()); - QVERIFY(res.isNull()); - } -} - -void tst_QDataStream::setVersion_data() -{ - QTest::addColumn("vers"); - QDataStream latest; - - for (int vers = 1; vers <= latest.version(); ++vers) - QTest::newRow(("v_" + QByteArray::number(vers)).constData()) << vers; -} - -void tst_QDataStream::setVersion() -{ - QDataStream latest; - QFETCH(int, vers); - - /* - Test QKeySequence. - */ - QByteArray ba1; - { - QDataStream out(&ba1, QIODevice::WriteOnly); - out.setVersion(vers); - out << QKeySequence(Qt::Key_A) << QKeySequence(Qt::Key_B, Qt::Key_C) - << (quint32)0xDEADBEEF; - } - { - QKeySequence keyseq1, keyseq2; - quint32 deadbeef; - QDataStream in(&ba1, QIODevice::ReadOnly); - in.setVersion(vers); - in >> keyseq1 >> keyseq2 >> deadbeef; - QCOMPARE(keyseq1, QKeySequence(Qt::Key_A)); - if (vers >= 5) { - QVERIFY(keyseq2 == QKeySequence(Qt::Key_B, Qt::Key_C)); - } else { - QCOMPARE(keyseq2, QKeySequence(Qt::Key_B)); - } - QCOMPARE(deadbeef, 0xDEADBEEF); - } - - /* - Test QPalette. - */ - - // revise the test if new color roles or color groups are added - QVERIFY(QPalette::NColorRoles == QPalette::ToolTipText + 1); - QCOMPARE(int(QPalette::NColorGroups), 3); - - QByteArray ba2; - QPalette pal1, pal2; - for (int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) { - for (int role = 0; role < (int)QPalette::NColorRoles; ++role) { - // random stuff - pal1.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)role, - QColor(grp * 13, 255 - grp, role)); - pal2.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)role, - QColor(role * 11, 254 - role, grp)); - } - } - - { - QDataStream out(&ba2, QIODevice::WriteOnly); - out.setVersion(vers); - out << pal1 << pal2 << (quint32)0xCAFEBABE; - } - { - QPalette inPal1, inPal2; - quint32 cafebabe; - QDataStream in(&ba2, QIODevice::ReadOnly); - in.setVersion(vers); - in >> inPal1 >> inPal2; - in >> cafebabe; - - QCOMPARE(cafebabe, 0xCAFEBABE); - - QCOMPARE(NColorRoles[latest.version()], (int)QPalette::NColorRoles); //if this fails you need to update the NColorRoles array - - if (vers == 1) { - for (int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) { - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Foreground) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Foreground)); - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Background) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Background)); - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Light) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Light)); - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Dark) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Dark)); - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Mid) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Mid)); - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Text) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Text)); - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Base) - == inPal1.color((QPalette::ColorGroup)grp, QPalette::Base)); - - QVERIFY(pal1.color((QPalette::ColorGroup)grp, QPalette::Midlight) - != inPal1.color((QPalette::ColorGroup)grp, QPalette::Midlight)); - } - } else { - if (NColorRoles[vers] < QPalette::NColorRoles) { - QVERIFY(pal1 != inPal1); - QVERIFY(pal2 != inPal2); - - for (int grp = 0; grp < (int)QPalette::NColorGroups; ++grp) { - for (int i = NColorRoles[vers]; i < QPalette::NColorRoles; ++i) { - inPal1.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)i, - pal1.color((QPalette::ColorGroup)grp, (QPalette::ColorRole)i)); - inPal2.setColor((QPalette::ColorGroup)grp, (QPalette::ColorRole)i, - pal2.color((QPalette::ColorGroup)grp, (QPalette::ColorRole)i)); - } - } - } - QCOMPARE(pal1, inPal1); - QCOMPARE(pal2, inPal2); - } - } -} - -class SequentialBuffer : public QBuffer -{ -public: - SequentialBuffer(QByteArray *data) : QBuffer(data) { offset = 0; } - - bool isSequential() const { return true; } - bool seek(qint64 pos) { offset = pos; return QBuffer::seek(pos); } - qint64 pos() const { return qint64(offset); } - -protected: - qint64 readData(char *data, qint64 maxSize) - { - qint64 ret = QBuffer::readData(data, maxSize); - offset += ret; - return ret; - } - -private: - int offset; -}; - -void tst_QDataStream::skipRawData_data() -{ - QTest::addColumn("deviceType"); - QTest::addColumn("data"); - QTest::addColumn("read"); - QTest::addColumn("skip"); - QTest::addColumn("skipped"); - QTest::addColumn("expect"); - - QByteArray bigData; - bigData.fill('a', 20000); - bigData[10001] = 'x'; - - QTest::newRow("1") << QString("sequential") << QByteArray("abcdefghij") << 3 << 6 << 6 << 'j'; - QTest::newRow("2") << QString("random-access") << QByteArray("abcdefghij") << 3 << 6 << 6 << 'j'; - QTest::newRow("3") << QString("sequential") << bigData << 1 << 10000 << 10000 << 'x'; - QTest::newRow("4") << QString("random-access") << bigData << 1 << 10000 << 10000 << 'x'; - QTest::newRow("5") << QString("sequential") << bigData << 1 << 20000 << 19999 << '\0'; - QTest::newRow("6") << QString("random-access") << bigData << 1 << 20000 << 19999 << '\0'; -} - -void tst_QDataStream::skipRawData() -{ - QFETCH(QString, deviceType); - QFETCH(QByteArray, data); - QFETCH(int, read); - QFETCH(int, skip); - QFETCH(int, skipped); - QFETCH(char, expect); - qint8 dummy; - - QIODevice *dev = 0; - if (deviceType == "sequential") { - dev = new SequentialBuffer(&data); - } else if (deviceType == "random-access") { - dev = new QBuffer(&data); - } - QVERIFY(dev); - dev->open(QIODevice::ReadOnly); - - QDataStream in(dev); - for (int i = 0; i < read; ++i) - in >> dummy; - - QCOMPARE(in.skipRawData(skip), skipped); - in >> dummy; - QCOMPARE((char)dummy, expect); - - delete dev; -} - -#define TEST_qint(T, UT) \ - void tst_QDataStream::status_##T() \ - { \ - QFETCH(QByteArray, bigEndianData); \ - QFETCH(QByteArray, littleEndianData); \ - QFETCH(int, expectedStatus); \ - QFETCH(qint64, expectedValue); \ - \ - { \ - QDataStream stream(&bigEndianData, QIODevice::ReadOnly); \ - T i; \ - stream >> i; \ - QCOMPARE((int) stream.status(), expectedStatus); \ - QCOMPARE(i, (T) expectedValue); \ - } \ - { \ - QDataStream stream(&bigEndianData, QIODevice::ReadOnly); \ - UT i; \ - stream >> i; \ - QCOMPARE((int) stream.status(), expectedStatus); \ - QCOMPARE((T) i, (T) expectedValue); \ - } \ - { \ - QDataStream stream(&littleEndianData, QIODevice::ReadOnly); \ - stream.setByteOrder(QDataStream::LittleEndian); \ - T i; \ - stream >> i; \ - QCOMPARE((int) stream.status(), expectedStatus); \ - QCOMPARE(i, (T) expectedValue); \ - } \ - { \ - QDataStream stream(&littleEndianData, QIODevice::ReadOnly); \ - stream.setByteOrder(QDataStream::LittleEndian); \ - UT i; \ - stream >> i; \ - QCOMPARE((int) stream.status(), expectedStatus); \ - QCOMPARE((T) i, (T) expectedValue); \ - } \ - } - -#define TEST_FLOAT(T) \ - void tst_QDataStream::status_##T() \ - { \ - QFETCH(QByteArray, bigEndianData); \ - QFETCH(QByteArray, littleEndianData); \ - QFETCH(int, expectedStatus); \ - QFETCH(double, expectedValue); \ - \ - QDataStream::FloatingPointPrecision prec = sizeof(T) == sizeof(double) ? QDataStream::DoublePrecision : QDataStream::SinglePrecision; \ - \ - { \ - QDataStream stream(&bigEndianData, QIODevice::ReadOnly); \ - stream.setFloatingPointPrecision(prec); \ - T i; \ - stream >> i; \ - QCOMPARE((int) stream.status(), expectedStatus); \ - QCOMPARE((float) i, (float) expectedValue); \ - } \ - { \ - QDataStream stream(&littleEndianData, QIODevice::ReadOnly); \ - stream.setByteOrder(QDataStream::LittleEndian); \ - stream.setFloatingPointPrecision(prec); \ - T i; \ - stream >> i; \ - QCOMPARE((int) stream.status(), expectedStatus); \ - QCOMPARE((float) i, (float) expectedValue); \ - } \ - } - -void tst_QDataStream::status_qint8_data() -{ - QTest::addColumn("bigEndianData"); - QTest::addColumn("littleEndianData"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedValue"); - - // ok - QTest::newRow("0") << QByteArray(1, '\x0') << QByteArray(1, '\x0') << (int) QDataStream::Ok << qint64(0); - QTest::newRow("-1") << QByteArray(1, '\xff') << QByteArray(1, '\xff') << (int) QDataStream::Ok << qint64(-1); - QTest::newRow("1") << QByteArray(1, '\x01') << QByteArray(1, '\x01') << (int) QDataStream::Ok << qint64(1); - QTest::newRow("37") << QByteArray(1, '\x25') << QByteArray(1, '\x25') << (int) QDataStream::Ok << qint64(37); - QTest::newRow("37j") << QByteArray("\x25j") << QByteArray("\x25j") << (int) QDataStream::Ok << qint64(37); - - // past end - QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0); -} - -TEST_qint(qint8, quint8) - -void tst_QDataStream::status_qint16_data() -{ - QTest::addColumn("bigEndianData"); - QTest::addColumn("littleEndianData"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedValue"); - - // ok - QTest::newRow("0") << QByteArray(2, '\x0') << QByteArray(2, '\x0') << (int) QDataStream::Ok << qint64(0); - QTest::newRow("-1") << QByteArray("\xff\xff", 2) << QByteArray("\xff\xff", 2) << (int) QDataStream::Ok << qint64(-1); - QTest::newRow("1") << QByteArray("\x00\x01", 2) << QByteArray("\x01\x00", 2) << (int) QDataStream::Ok << qint64(1); - QTest::newRow("37") << QByteArray("\x00\x25", 2) << QByteArray("\x25\x00", 2) << (int) QDataStream::Ok << qint64(37); - QTest::newRow("37j") << QByteArray("\x00\x25j", 3) << QByteArray("\x25\x00j", 3) << (int) QDataStream::Ok << qint64(37); - QTest::newRow("0x1234") << QByteArray("\x12\x34", 2) << QByteArray("\x34\x12", 2) << (int) QDataStream::Ok << qint64(0x1234); - - // past end - QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << qint64(0); -} - -TEST_qint(qint16, quint16) - -void tst_QDataStream::status_qint32_data() -{ - QTest::addColumn("bigEndianData"); - QTest::addColumn("littleEndianData"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedValue"); - - // ok - QTest::newRow("0") << QByteArray(4, '\x0') << QByteArray(4, '\x0') << (int) QDataStream::Ok << qint64(0); - QTest::newRow("-1") << QByteArray("\xff\xff\xff\xff", 4) << QByteArray("\xff\xff\xff\xff", 4) << (int) QDataStream::Ok << qint64(-1); - QTest::newRow("1") << QByteArray("\x00\x00\x00\x01", 4) << QByteArray("\x01\x00\x00\x00", 4) << (int) QDataStream::Ok << qint64(1); - QTest::newRow("37") << QByteArray("\x00\x00\x00\x25", 4) << QByteArray("\x25\x00\x00\x00", 4) << (int) QDataStream::Ok << qint64(37); - QTest::newRow("37j") << QByteArray("\x00\x00\x00\x25j", 5) << QByteArray("\x25\x00\x00\x00j", 5) << (int) QDataStream::Ok << qint64(37); - QTest::newRow("0x12345678") << QByteArray("\x12\x34\x56\x78", 4) << QByteArray("\x78\x56\x34\x12", 4) << (int) QDataStream::Ok << qint64(0x12345678); - - // past end - QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << qint64(0); -} - -TEST_qint(qint32, quint32) - -void tst_QDataStream::status_qint64_data() -{ - QTest::addColumn("bigEndianData"); - QTest::addColumn("littleEndianData"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedValue"); - - // ok - QTest::newRow("0") << QByteArray(8, '\x0') << QByteArray(8, '\x0') << (int) QDataStream::Ok << qint64(0); - QTest::newRow("-1") << QByteArray("\xff\xff\xff\xff\xff\xff\xff\xff", 8) << QByteArray("\xff\xff\xff\xff\xff\xff\xff\xff", 8) << (int) QDataStream::Ok << qint64(-1); - QTest::newRow("1") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x01", 8) << QByteArray("\x01\x00\x00\x00\x00\x00\x00\x00", 8) << (int) QDataStream::Ok << qint64(1); - QTest::newRow("37") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x25", 8) << QByteArray("\x25\x00\x00\x00\x00\x00\x00\x00", 8) << (int) QDataStream::Ok << qint64(37); - QTest::newRow("37j") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x25j", 9) << QByteArray("\x25\x00\x00\x00\x00\x00\x00\x00j", 9) << (int) QDataStream::Ok << qint64(37); - QTest::newRow("0x123456789ABCDEF0") << QByteArray("\x12\x34\x56\x78\x9a\xbc\xde\xf0", 8) << QByteArray("\xf0\xde\xbc\x9a\x78\x56\x34\x12", 8) << (int) QDataStream::Ok << (qint64)Q_INT64_C(0x123456789ABCDEF0); - - // past end - QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 5") << QByteArray("1111", 4) << QByteArray("1111", 4) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 6") << QByteArray("11111", 5) << QByteArray("11111", 5) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 7") << QByteArray("111111", 6) << QByteArray("111111", 6) << (int) QDataStream::ReadPastEnd << qint64(0); - QTest::newRow("end 8") << QByteArray("1111111", 7) << QByteArray("1111111", 7) << (int) QDataStream::ReadPastEnd << qint64(0); -} - -TEST_qint(qint64, quint64) - -void tst_QDataStream::status_float_data() -{ - QTest::addColumn("bigEndianData"); - QTest::addColumn("littleEndianData"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedValue"); - - // ok - QTest::newRow("0") << QByteArray(4, '\0') << QByteArray(4, '\0') << (int) QDataStream::Ok << (double) 0.0; - QTest::newRow("-1") << QByteArray("\xbf\x80\x00\x00", 4) << QByteArray("\x00\x00\x80\xbf", 4) << (int) QDataStream::Ok << (double) -1; - QTest::newRow("1") << QByteArray("\x3f\x80\x00\x00", 4) << QByteArray("\x00\x00\x80\x3f", 4) << (int) QDataStream::Ok << (double) 1; - QTest::newRow("37") << QByteArray("\x42\x14\x00\x00", 4) << QByteArray("\x00\x00\x14\x42", 4) << (int) QDataStream::Ok << (double) 37; - QTest::newRow("37j") << QByteArray("\x42\x14\x00\x00j", 5) << QByteArray("\x00\x00\x14\x42j", 5) << (int) QDataStream::Ok << (double) 37; - QTest::newRow("3.14") << QByteArray("\x40\x48\xf5\xc3", 4) << QByteArray("\xc3\xf5\x48\x40", 4) << (int) QDataStream::Ok << (double) 3.14; - - // past end - QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << double(0); -} - -TEST_FLOAT(float) - -void tst_QDataStream::status_double_data() -{ - QTest::addColumn("bigEndianData"); - QTest::addColumn("littleEndianData"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedValue"); - - // ok - QTest::newRow("0") << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x00\x00\x00", 8) << (int) QDataStream::Ok << (double) 0; - QTest::newRow("-1") << QByteArray("\xbf\xf0\x00\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x00\xf0\xbf", 8) << (int) QDataStream::Ok << (double) -1; - QTest::newRow("1") << QByteArray("\x3f\xf0\x00\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x00\xf0\x3f", 8) << (int) QDataStream::Ok << (double) 1; - QTest::newRow("37") << QByteArray("\x40\x42\x80\x00\x00\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x00\x00\x80\x42\x40", 8) << (int) QDataStream::Ok << (double) 37; - QTest::newRow("37j") << QByteArray("\x40\x42\x80\x00\x00\x00\x00\x00j", 9) << QByteArray("\x00\x00\x00\x00\x00\x80\x42\x40j", 9) << (int) QDataStream::Ok << (double) 37; - QTest::newRow("3.14") << QByteArray("\x40\x09\x1e\xb8\x60\x00\x00\x00", 8) << QByteArray("\x00\x00\x00\x60\xb8\x1e\x09\x40", 8) << (int) QDataStream::Ok << (double) 3.14; - QTest::newRow("1234.5678") << QByteArray("\x40\x93\x4a\x45\x6d\x5c\xfa\xad", 8) << QByteArray("\xad\xfa\x5c\x6d\x45\x4a\x93\x40", 8) << (int) QDataStream::Ok << (double) 1234.5678; - - // past end - QTest::newRow("empty") << QByteArray() << QByteArray() << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 1") << QByteArray("", 1) << QByteArray("", 1) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 2") << QByteArray("\x25", 1) << QByteArray("\x25", 1) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 3") << QByteArray("11", 2) << QByteArray("11", 2) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 4") << QByteArray("111", 3) << QByteArray("111", 3) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 5") << QByteArray("1111", 4) << QByteArray("1111", 4) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 6") << QByteArray("11111", 5) << QByteArray("11111", 5) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 7") << QByteArray("111111", 6) << QByteArray("111111", 6) << (int) QDataStream::ReadPastEnd << double(0); - QTest::newRow("end 8") << QByteArray("1111111", 7) << QByteArray("1111111", 7) << (int) QDataStream::ReadPastEnd << double(0); -} - -TEST_FLOAT(double) - -void tst_QDataStream::status_charptr_QByteArray_data() -{ - QTest::addColumn("data"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedString"); - - QByteArray oneMbMinus1(1024 * 1024 - 1, '\0'); - for (int i = 0; i < oneMbMinus1.size(); ++i) - oneMbMinus1[i] = 0x1 | (8 * ((uchar)i / 9)); - QByteArray threeMbMinus1 = oneMbMinus1 + 'j' + oneMbMinus1 + 'k' + oneMbMinus1; - - // ok - QTest::newRow("size 0") << QByteArray("\x00\x00\x00\x00", 4) << (int) QDataStream::Ok << QByteArray(); - QTest::newRow("size 1") << QByteArray("\x00\x00\x00\x01j", 5) << (int) QDataStream::Ok << QByteArray("j"); - QTest::newRow("size 2") << QByteArray("\x00\x00\x00\x02jk", 6) << (int) QDataStream::Ok << QByteArray("jk"); - QTest::newRow("size 3") << QByteArray("\x00\x00\x00\x03jkl", 7) << (int) QDataStream::Ok << QByteArray("jkl"); - QTest::newRow("size 4") << QByteArray("\x00\x00\x00\x04jklm", 8) << (int) QDataStream::Ok << QByteArray("jklm"); - QTest::newRow("size 4j") << QByteArray("\x00\x00\x00\x04jklmj", 8) << (int) QDataStream::Ok << QByteArray("jklm"); - QTest::newRow("size 1MB-1") << QByteArray("\x00\x0f\xff\xff", 4) + oneMbMinus1 + QByteArray("j") << (int) QDataStream::Ok << oneMbMinus1; - QTest::newRow("size 1MB") << QByteArray("\x00\x10\x00\x00", 4) + oneMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << oneMbMinus1 + "j"; - QTest::newRow("size 1MB+1") << QByteArray("\x00\x10\x00\x01", 4) + oneMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << oneMbMinus1 + "jk"; - QTest::newRow("size 3MB-1") << QByteArray("\x00\x2f\xff\xff", 4) + threeMbMinus1 + QByteArray("j") << (int) QDataStream::Ok << threeMbMinus1; - QTest::newRow("size 3MB") << QByteArray("\x00\x30\x00\x00", 4) + threeMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << threeMbMinus1 + "j"; - QTest::newRow("size 3MB+1") << QByteArray("\x00\x30\x00\x01", 4) + threeMbMinus1 + QByteArray("jkl") << (int) QDataStream::Ok << threeMbMinus1 + "jk"; - - // past end - QTest::newRow("empty") << QByteArray() << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("trunclen 1") << QByteArray("x") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("trunclen 2") << QByteArray("xx") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("trunclen 3") << QByteArray("xxx") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("truncdata 1") << QByteArray("xxxx") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("truncdata 2") << QByteArray("xxxxyyyy") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 1") << QByteArray("\x00\x00\x00\x01", 4) << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 2") << QByteArray("\x00\x00\x00\x02j", 5) << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 3") << QByteArray("\x00\x00\x00\x03jk", 6) << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 4") << QByteArray("\x00\x00\x00\x04jkl", 7) << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 1MB") << QByteArray("\x00\x10\x00\x00", 4) + oneMbMinus1 << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 1MB+1") << QByteArray("\x00\x10\x00\x01", 4) + oneMbMinus1 + QByteArray("j") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 3MB") << QByteArray("\x00\x30\x00\x00", 4) + threeMbMinus1 << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("badsize 3MB+1") << QByteArray("\x00\x30\x00\x01", 4) + threeMbMinus1 + QByteArray("j") << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("size -1") << QByteArray("\xff\xff\xff\xff", 4) << (int) QDataStream::ReadPastEnd << QByteArray(); - QTest::newRow("size -2") << QByteArray("\xff\xff\xff\xfe", 4) << (int) QDataStream::ReadPastEnd << QByteArray(); -} - -void tst_QDataStream::status_charptr_QByteArray() -{ - QFETCH(QByteArray, data); - QFETCH(int, expectedStatus); - QFETCH(QByteArray, expectedString); - - { - QDataStream stream(&data, QIODevice::ReadOnly); - char *buf; - stream >> buf; - - QCOMPARE((int)qstrlen(buf), expectedString.size()); - QCOMPARE(QByteArray(buf), expectedString); - QCOMPARE(int(stream.status()), expectedStatus); - delete [] buf; - } - { - QDataStream stream(&data, QIODevice::ReadOnly); - char *buf; - uint len; - stream.readBytes(buf, len); - - QCOMPARE((int)len, expectedString.size()); - QCOMPARE(QByteArray(buf, len), expectedString); - QCOMPARE(int(stream.status()), expectedStatus); - delete [] buf; - } - { - QDataStream stream(&data, QIODevice::ReadOnly); - QByteArray buf; - stream >> buf; - - if (data.startsWith("\xff\xff\xff\xff")) { - // QByteArray, unlike 'char *', supports the null/empty distinction - QVERIFY(buf.isNull()); - } else { - QCOMPARE(buf.size(), expectedString.size()); - QCOMPARE(buf, expectedString); - QCOMPARE(int(stream.status()), expectedStatus); - } - } -} - -static QByteArray qstring2qbytearray(const QString &str) -{ - QByteArray ba(str.size() * 2 , '\0'); - for (int i = 0; i < str.size(); ++i) { - // BigEndian - ba[2 * i] = str[i].row(); - ba[2 * i + 1] = str[i].cell(); - } - return ba; -} - -void tst_QDataStream::status_QString_data() -{ - QTest::addColumn("data"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedString"); - - QString oneMbMinus1; - oneMbMinus1.resize(1024 * 1024 - 1); - for (int i = 0; i < oneMbMinus1.size(); ++i) - oneMbMinus1[i] = 0x1 | (8 * ((uchar)i / 9)); - QString threeMbMinus1 = oneMbMinus1 + QChar('j') + oneMbMinus1 + QChar('k') + oneMbMinus1; - - QByteArray threeMbMinus1Data = qstring2qbytearray(threeMbMinus1); - QByteArray oneMbMinus1Data = qstring2qbytearray(oneMbMinus1); - - // ok - QTest::newRow("size 0") << QByteArray("\x00\x00\x00\x00", 4) << (int) QDataStream::Ok << QString(); - QTest::newRow("size 1") << QByteArray("\x00\x00\x00\x02\x00j", 6) << (int) QDataStream::Ok << QString("j"); - QTest::newRow("size 2") << QByteArray("\x00\x00\x00\x04\x00j\x00k", 8) << (int) QDataStream::Ok << QString("jk"); - QTest::newRow("size 3") << QByteArray("\x00\x00\x00\x06\x00j\x00k\x00l", 10) << (int) QDataStream::Ok << QString("jkl"); - QTest::newRow("size 4") << QByteArray("\x00\x00\x00\x08\x00j\x00k\x00l\x00m", 12) << (int) QDataStream::Ok << QString("jklm"); - QTest::newRow("size 4j") << QByteArray("\x00\x00\x00\x08\x00j\x00k\x00l\x00mjj", 14) << (int) QDataStream::Ok << QString("jklm"); - QTest::newRow("size 1MB-1") << QByteArray("\x00\x1f\xff\xfe", 4) + oneMbMinus1Data + QByteArray("jj") << (int) QDataStream::Ok << oneMbMinus1; - QTest::newRow("size 1MB") << QByteArray("\x00\x20\x00\x00", 4) + oneMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << oneMbMinus1 + "j"; - QTest::newRow("size 1MB+1") << QByteArray("\x00\x20\x00\x02", 4) + oneMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << oneMbMinus1 + "jk"; - QTest::newRow("size 3MB-1") << QByteArray("\x00\x5f\xff\xfe", 4) + threeMbMinus1Data + QByteArray("jj") << (int) QDataStream::Ok << threeMbMinus1; - QTest::newRow("size 3MB") << QByteArray("\x00\x60\x00\x00", 4) + threeMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << threeMbMinus1 + "j"; - QTest::newRow("size 3MB+1") << QByteArray("\x00\x60\x00\x02", 4) + threeMbMinus1Data + QByteArray("\x00j\x00k\x00l", 6) << (int) QDataStream::Ok << threeMbMinus1 + "jk"; - - // past end - QTest::newRow("empty") << QByteArray() << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("trunclen 1") << QByteArray("x") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("trunclen 2") << QByteArray("xx") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("trunclen 3") << QByteArray("xxx") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("truncdata 1") << QByteArray("xxxx") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("truncdata 2") << QByteArray("xxxxyyyy") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 1") << QByteArray("\x00\x00\x00\x02", 4) << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 2") << QByteArray("\x00\x00\x00\x04jj", 6) << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 3") << QByteArray("\x00\x00\x00\x06jjkk", 8) << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 4") << QByteArray("\x00\x00\x00\x08jjkkll", 10) << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 1MB") << QByteArray("\x00\x20\x00\x00", 4) + oneMbMinus1Data << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 1MB+1") << QByteArray("\x00\x20\x00\x02", 4) + oneMbMinus1Data + QByteArray("j") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 3MB") << QByteArray("\x00\x60\x00\x00", 4) + threeMbMinus1Data << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("badsize 3MB+1") << QByteArray("\x00\x60\x00\x02", 4) + threeMbMinus1Data + QByteArray("j") << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("size -2") << QByteArray("\xff\xff\xff\xfe", 4) << (int) QDataStream::ReadPastEnd << QString(); - QTest::newRow("size MAX") << QByteArray("\x7f\xff\xff\xfe", 4) << (int) QDataStream::ReadPastEnd << QString(); - - // corrupt data - QTest::newRow("corrupt1") << QByteArray("yyyy") << (int) QDataStream::ReadCorruptData << QString(); - QTest::newRow("size -3") << QByteArray("\xff\xff\xff\xfd", 4) << (int) QDataStream::ReadCorruptData << QString(); -} - -void tst_QDataStream::status_QString() -{ - QFETCH(QByteArray, data); - QFETCH(int, expectedStatus); - QFETCH(QString, expectedString); - - QDataStream stream(&data, QIODevice::ReadOnly); - QString str; - stream >> str; - - QCOMPARE(str.size(), expectedString.size()); - QCOMPARE(str, expectedString); - QCOMPARE(int(stream.status()), expectedStatus); -} - -static QBitArray bitarray(const QString &str) -{ - QBitArray array(str.size()); - for (int i = 0; i < str.size(); ++i) - array[i] = (str[i] != '0'); - return array; -} - -void tst_QDataStream::status_QBitArray_data() -{ - QTest::addColumn("data"); - QTest::addColumn("expectedStatus"); - QTest::addColumn("expectedString"); - - // ok - QTest::newRow("size 0") << QByteArray("\x00\x00\x00\x00", 4) << (int) QDataStream::Ok << QBitArray(); - QTest::newRow("size 1a") << QByteArray("\x00\x00\x00\x01\x00", 5) << (int) QDataStream::Ok << bitarray("0"); - QTest::newRow("size 1b") << QByteArray("\x00\x00\x00\x01\x01", 5) << (int) QDataStream::Ok << bitarray("1"); - QTest::newRow("size 2") << QByteArray("\x00\x00\x00\x02\x03", 5) << (int) QDataStream::Ok << bitarray("11"); - QTest::newRow("size 3") << QByteArray("\x00\x00\x00\x03\x07", 5) << (int) QDataStream::Ok << bitarray("111"); - QTest::newRow("size 4") << QByteArray("\x00\x00\x00\x04\x0f", 5) << (int) QDataStream::Ok << bitarray("1111"); - QTest::newRow("size 5") << QByteArray("\x00\x00\x00\x05\x1f", 5) << (int) QDataStream::Ok << bitarray("11111"); - QTest::newRow("size 6") << QByteArray("\x00\x00\x00\x06\x3f", 5) << (int) QDataStream::Ok << bitarray("111111"); - QTest::newRow("size 7a") << QByteArray("\x00\x00\x00\x07\x7f", 5) << (int) QDataStream::Ok << bitarray("1111111"); - QTest::newRow("size 7b") << QByteArray("\x00\x00\x00\x07\x7e", 5) << (int) QDataStream::Ok << bitarray("0111111"); - QTest::newRow("size 7c") << QByteArray("\x00\x00\x00\x07\x00", 5) << (int) QDataStream::Ok << bitarray("0000000"); - QTest::newRow("size 7d") << QByteArray("\x00\x00\x00\x07\x39", 5) << (int) QDataStream::Ok << bitarray("1001110"); - QTest::newRow("size 8") << QByteArray("\x00\x00\x00\x08\xff", 5) << (int) QDataStream::Ok << bitarray("11111111"); - QTest::newRow("size 9") << QByteArray("\x00\x00\x00\x09\xff\x01", 6) << (int) QDataStream::Ok << bitarray("111111111"); - QTest::newRow("size 15") << QByteArray("\x00\x00\x00\x0f\xff\x7f", 6) << (int) QDataStream::Ok << bitarray("111111111111111"); - QTest::newRow("size 16") << QByteArray("\x00\x00\x00\x10\xff\xff", 6) << (int) QDataStream::Ok << bitarray("1111111111111111"); - QTest::newRow("size 17") << QByteArray("\x00\x00\x00\x11\xff\xff\x01", 7) << (int) QDataStream::Ok << bitarray("11111111111111111"); - QTest::newRow("size 32") << QByteArray("\x00\x00\x00\x20\xff\xff\xff\xff", 8) << (int) QDataStream::Ok << bitarray("11111111111111111111111111111111"); - - // past end - QTest::newRow("empty") << QByteArray() << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 0a") << QByteArray("\x00", 1) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 0b") << QByteArray("\x00\x00", 2) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 0c") << QByteArray("\x00\x00\x00", 3) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 1") << QByteArray("\x00\x00\x00\x01", 4) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 2") << QByteArray("\x00\x00\x00\x02", 4) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 3") << QByteArray("\x00\x00\x00\x03", 4) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("badsize 7") << QByteArray("\x00\x00\x00\x04", 4) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("size 8") << QByteArray("\x00\x00\x00\x08", 4) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("size 9") << QByteArray("\x00\x00\x00\x09\xff", 5) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("size 15") << QByteArray("\x00\x00\x00\x0f\xff", 5) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("size 16") << QByteArray("\x00\x00\x00\x10\xff", 5) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("size 17") << QByteArray("\x00\x00\x00\x11\xff\xff", 6) << (int) QDataStream::ReadPastEnd << QBitArray(); - QTest::newRow("size 32") << QByteArray("\x00\x00\x00\x20\xff\xff\xff", 7) << (int) QDataStream::ReadPastEnd << QBitArray(); - - // corrupt data - QTest::newRow("junk 1a") << QByteArray("\x00\x00\x00\x01\x02", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 1b") << QByteArray("\x00\x00\x00\x01\x04", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 1c") << QByteArray("\x00\x00\x00\x01\x08", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 1d") << QByteArray("\x00\x00\x00\x01\x10", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 1e") << QByteArray("\x00\x00\x00\x01\x20", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 1f") << QByteArray("\x00\x00\x00\x01\x40", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 1g") << QByteArray("\x00\x00\x00\x01\x80", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 2") << QByteArray("\x00\x00\x00\x02\x04", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 3") << QByteArray("\x00\x00\x00\x03\x08", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 4") << QByteArray("\x00\x00\x00\x04\x10", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 5") << QByteArray("\x00\x00\x00\x05\x20", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 6") << QByteArray("\x00\x00\x00\x06\x40", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); - QTest::newRow("junk 7") << QByteArray("\x00\x00\x00\x07\x80", 5) << (int) QDataStream::ReadCorruptData << QBitArray(); -} - -void tst_QDataStream::status_QBitArray() -{ - QFETCH(QByteArray, data); - QFETCH(int, expectedStatus); - QFETCH(QBitArray, expectedString); - - QDataStream stream(&data, QIODevice::ReadOnly); - QBitArray str; - stream >> str; - - QCOMPARE(int(stream.status()), expectedStatus); - QCOMPARE(str.size(), expectedString.size()); - QCOMPARE(str, expectedString); -} - -#define MAP_TEST(byteArray, initialStatus, expectedStatus, expectedHash) \ - for (bool inTransaction = false;; inTransaction = true) { \ - { \ - QByteArray ba = byteArray; \ - QDataStream stream(&ba, QIODevice::ReadOnly); \ - if (inTransaction) \ - stream.startTransaction(); \ - stream.setStatus(initialStatus); \ - stream >> hash; \ - QCOMPARE((int)stream.status(), (int)expectedStatus); \ - if (!inTransaction || stream.commitTransaction()) { \ - QCOMPARE(hash.size(), expectedHash.size()); \ - QCOMPARE(hash, expectedHash); \ - } else { \ - QVERIFY(hash.isEmpty()); \ - } \ - } \ - { \ - QByteArray ba = byteArray; \ - StringMap expectedMap; \ - StringHash::const_iterator it = expectedHash.constBegin(); \ - for (; it != expectedHash.constEnd(); ++it) \ - expectedMap.insert(it.key(), it.value()); \ - QDataStream stream(&ba, QIODevice::ReadOnly); \ - if (inTransaction) \ - stream.startTransaction(); \ - stream.setStatus(initialStatus); \ - stream >> map; \ - QCOMPARE((int)stream.status(), (int)expectedStatus); \ - if (!inTransaction || stream.commitTransaction()) { \ - QCOMPARE(map.size(), expectedMap.size()); \ - QCOMPARE(map, expectedMap); \ - } else { \ - QVERIFY(map.isEmpty()); \ - } \ - } \ - if (inTransaction) \ - break; \ - } - -void tst_QDataStream::status_QHash_QMap() -{ - typedef QHash StringHash; - typedef QMap StringMap; - StringHash hash; - StringMap map; - - StringHash hash1; - hash1.insert("", ""); - - StringHash hash2; - hash2.insert("J", "K"); - hash2.insert("L", "MN"); - - // ok - MAP_TEST(QByteArray("\x00\x00\x00\x00", 4), QDataStream::Ok, QDataStream::Ok, StringHash()); - MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", 12), QDataStream::Ok, QDataStream::Ok, hash1); - MAP_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x02\x00J\x00\x00\x00\x02\x00K" - "\x00\x00\x00\x02\x00L\x00\x00\x00\x04\x00M\x00N", 30), QDataStream::Ok, QDataStream::Ok, hash2); - - // past end - MAP_TEST(QByteArray(), QDataStream::Ok, QDataStream::ReadPastEnd, StringHash()); - MAP_TEST(QByteArray("\x00", 1), QDataStream::Ok, QDataStream::ReadPastEnd, StringHash()); - MAP_TEST(QByteArray("\x00\x00", 2), QDataStream::Ok, QDataStream::ReadPastEnd, StringHash()); - MAP_TEST(QByteArray("\x00\x00\x00", 3), QDataStream::Ok, QDataStream::ReadPastEnd, StringHash()); - MAP_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::Ok, QDataStream::ReadPastEnd, StringHash()); - for (int i = 4; i < 12; ++i) { - MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", i), QDataStream::Ok, QDataStream::ReadPastEnd, StringHash()); - } - - // corrupt data - MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::Ok, QDataStream::ReadCorruptData, StringHash()); - MAP_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x01\x00J\x00\x00\x00\x01\x00K" - "\x00\x00\x00\x01\x00L\x00\x00\x00\x02\x00M\x00N", 30), QDataStream::Ok, QDataStream::ReadCorruptData, StringHash()); - - // test the previously latched error status is not affected by reading - MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00", 12), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, hash1); - MAP_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::ReadCorruptData, QDataStream::ReadCorruptData, StringHash()); - MAP_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, StringHash()); -} - -#define LIST_TEST(byteArray, initialStatus, expectedStatus, expectedList) \ - for (bool inTransaction = false;; inTransaction = true) { \ - { \ - QByteArray ba = byteArray; \ - QDataStream stream(&ba, QIODevice::ReadOnly); \ - if (inTransaction) \ - stream.startTransaction(); \ - stream.setStatus(initialStatus); \ - stream >> list; \ - QCOMPARE((int)stream.status(), (int)expectedStatus); \ - if (!inTransaction || stream.commitTransaction()) { \ - QCOMPARE(list.size(), expectedList.size()); \ - QCOMPARE(list, expectedList); \ - } else { \ - QVERIFY(list.isEmpty()); \ - } \ - } \ - { \ - LinkedList expectedLinkedList; \ - for (int i = 0; i < expectedList.count(); ++i) \ - expectedLinkedList << expectedList.at(i); \ - QByteArray ba = byteArray; \ - QDataStream stream(&ba, QIODevice::ReadOnly); \ - if (inTransaction) \ - stream.startTransaction(); \ - stream.setStatus(initialStatus); \ - stream >> linkedList; \ - QCOMPARE((int)stream.status(), (int)expectedStatus); \ - if (!inTransaction || stream.commitTransaction()) { \ - QCOMPARE(linkedList.size(), expectedLinkedList.size()); \ - QCOMPARE(linkedList, expectedLinkedList); \ - } else { \ - QVERIFY(linkedList.isEmpty()); \ - } \ - } \ - { \ - Vector expectedVector; \ - for (int i = 0; i < expectedList.count(); ++i) \ - expectedVector << expectedList.at(i); \ - QByteArray ba = byteArray; \ - QDataStream stream(&ba, QIODevice::ReadOnly); \ - if (inTransaction) \ - stream.startTransaction(); \ - stream.setStatus(initialStatus); \ - stream >> vector; \ - QCOMPARE((int)stream.status(), (int)expectedStatus); \ - if (!inTransaction || stream.commitTransaction()) { \ - QCOMPARE(vector.size(), expectedVector.size()); \ - QCOMPARE(vector, expectedVector); \ - } else { \ - QVERIFY(vector.isEmpty()); \ - } \ - } \ - if (inTransaction) \ - break; \ - } - -void tst_QDataStream::status_QLinkedList_QList_QVector() -{ - typedef QLinkedList LinkedList; - typedef QList List; - typedef QVector Vector; - LinkedList linkedList; - List list; - Vector vector; - - // ok - { - List listWithEmptyString; - listWithEmptyString.append(""); - - List someList; - someList.append("J"); - someList.append("MN"); - - LIST_TEST(QByteArray("\x00\x00\x00\x00", 4), QDataStream::Ok, QDataStream::Ok, List()); - LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00", 8), QDataStream::Ok, QDataStream::Ok, listWithEmptyString); - LIST_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x02\x00J" - "\x00\x00\x00\x04\x00M\x00N", 18), QDataStream::Ok, QDataStream::Ok, someList); - } - - // past end - { - LIST_TEST(QByteArray(), QDataStream::Ok, QDataStream::ReadPastEnd, List()); - LIST_TEST(QByteArray("\x00", 1), QDataStream::Ok, QDataStream::ReadPastEnd, List()); - LIST_TEST(QByteArray("\x00\x00", 2), QDataStream::Ok, QDataStream::ReadPastEnd, List()); - LIST_TEST(QByteArray("\x00\x00\x00", 3), QDataStream::Ok, QDataStream::ReadPastEnd, List()); - LIST_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::Ok, QDataStream::ReadPastEnd, List()); - for (int i = 4; i < 12; ++i) { - LIST_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x00\x00\x00\x00\x00", i), QDataStream::Ok, QDataStream::ReadPastEnd, List()); - } - } - - // corrupt data - { - LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::Ok, QDataStream::ReadCorruptData, List()); - LIST_TEST(QByteArray("\x00\x00\x00\x02\x00\x00\x00\x01\x00J" - "\x00\x00\x00\x02\x00M\x00N", 18), QDataStream::Ok, QDataStream::ReadCorruptData, List()); - } - - // test the previously latched error status is not affected by reading - { - List listWithEmptyString; - listWithEmptyString.append(""); - - LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x00", 8), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, listWithEmptyString); - LIST_TEST(QByteArray("\x00\x00\x00\x01", 4), QDataStream::ReadCorruptData, QDataStream::ReadCorruptData, List()); - LIST_TEST(QByteArray("\x00\x00\x00\x01\x00\x00\x00\x01", 8), QDataStream::ReadPastEnd, QDataStream::ReadPastEnd, List()); - } -} - -void tst_QDataStream::streamToAndFromQByteArray() -{ - QByteArray data; - QDataStream in(&data, QIODevice::WriteOnly); - QDataStream out(&data, QIODevice::ReadOnly); - - quint32 x = 0xdeadbeef; - quint32 y; - in << x; - out >> y; - - QCOMPARE(y, x); -} - -void tst_QDataStream::streamRealDataTypes() -{ - // Generate QPicture from pixmap. - QPixmap pm(open_xpm); - QVERIFY(!pm.isNull()); - QPicture picture; - picture.setBoundingRect(QRect(QPoint(0, 0), pm.size())); - QPainter painter(&picture); - painter.drawPixmap(0, 0, pm); - painter.end(); - - // Generate path - QPainterPath path; - path.lineTo(10, 0); - path.cubicTo(0, 0, 10, 10, 20, 20); - path.arcTo(4, 5, 6, 7, 8, 9); - path.quadTo(1, 2, 3, 4); - - QColor color(64, 64, 64); - color.setAlphaF(0.5); - QRadialGradient radialGradient(5, 6, 7, 8, 9); - QBrush radialBrush(radialGradient); - QConicalGradient conicalGradient(5, 6, 7); - QBrush conicalBrush(conicalGradient); - - for (int i = 0; i < 2; ++i) { - QFile file; - if (i == 0) { - file.setFileName(QFINDTESTDATA("datastream.q42")); - } else { - file.setFileName("datastream.tmp"); - - // Generate data - QVERIFY(file.open(QIODevice::WriteOnly)); - QDataStream stream(&file); - stream.setVersion(QDataStream::Qt_4_2); - stream << qreal(0) << qreal(1.0) << qreal(1.1) << qreal(3.14) << qreal(-3.14) << qreal(-1); - stream << QPointF(3, 5) << QRectF(-1, -2, 3, 4) << (QPolygonF() << QPointF(0, 0) << QPointF(1, 2)); - stream << QMatrix().rotate(90).scale(2, 2); - stream << path; - stream << picture; - stream << QTextLength(QTextLength::VariableLength, 1.5); - stream << color; - stream << radialBrush << conicalBrush; - stream << QPen(QBrush(Qt::red), 1.5); - - file.close(); - } - - QPointF point; - QRectF rect; - QPolygonF polygon; - QMatrix matrix; - QPainterPath p; - QPicture pict; - QTextLength textLength; - QColor col; - QBrush rGrad; - QBrush cGrad; - QPen pen; - - QVERIFY(file.open(QIODevice::ReadOnly)); - QDataStream stream(&file); - stream.setVersion(QDataStream::Qt_4_2); - - if (i == 0) { - // the reference stream for 4.2 contains doubles, - // so we must read them out as doubles! - double a, b, c, d, e, f; - stream >> a; - QCOMPARE(a, 0.0); - stream >> b; - QCOMPARE(b, 1.0); - stream >> c; - QCOMPARE(c, 1.1); - stream >> d; - QCOMPARE(d, 3.14); - stream >> e; - QCOMPARE(e, -3.14); - stream >> f; - QCOMPARE(f, -1.0); - } else { - qreal a, b, c, d, e, f; - stream >> a; - QCOMPARE(a, qreal(0)); - stream >> b; - QCOMPARE(b, qreal(1.0)); - stream >> c; - QCOMPARE(c, qreal(1.1)); - stream >> d; - QCOMPARE(d, qreal(3.14)); - stream >> e; - QCOMPARE(e, qreal(-3.14)); - stream >> f; - QCOMPARE(f, qreal(-1)); - } - stream >> point; - QCOMPARE(point, QPointF(3, 5)); - stream >> rect; - QCOMPARE(rect, QRectF(-1, -2, 3, 4)); - stream >> polygon; - QCOMPARE((QVector &)polygon, (QPolygonF() << QPointF(0, 0) << QPointF(1, 2))); - stream >> matrix; - QCOMPARE(matrix, QMatrix().rotate(90).scale(2, 2)); - stream >> p; - QCOMPARE(p, path); - if (i == 1) { - stream >> pict; - - QByteArray pictA, pictB; - QBuffer bufA, bufB; - QVERIFY(bufA.open(QIODevice::ReadWrite)); - QVERIFY(bufB.open(QIODevice::ReadWrite)); - - picture.save(&bufA); - pict.save(&bufB); - - QCOMPARE(pictA, pictB); - } - stream >> textLength; - QCOMPARE(textLength, QTextLength(QTextLength::VariableLength, 1.5)); - stream >> col; - QCOMPARE(col, color); - stream >> rGrad; - QCOMPARE(rGrad.style(), radialBrush.style()); - QCOMPARE(rGrad.matrix(), radialBrush.matrix()); - QCOMPARE(rGrad.gradient()->type(), radialBrush.gradient()->type()); - QCOMPARE(rGrad.gradient()->stops(), radialBrush.gradient()->stops()); - QCOMPARE(rGrad.gradient()->spread(), radialBrush.gradient()->spread()); - QCOMPARE(((QRadialGradient *)rGrad.gradient())->center(), ((QRadialGradient *)radialBrush.gradient())->center()); - QCOMPARE(((QRadialGradient *)rGrad.gradient())->focalPoint(), ((QRadialGradient *)radialBrush.gradient())->focalPoint()); - QCOMPARE(((QRadialGradient *)rGrad.gradient())->radius(), ((QRadialGradient *)radialBrush.gradient())->radius()); - stream >> cGrad; - QCOMPARE(cGrad.style(), conicalBrush.style()); - QCOMPARE(cGrad.matrix(), conicalBrush.matrix()); - QCOMPARE(cGrad.gradient()->type(), conicalBrush.gradient()->type()); - QCOMPARE(cGrad.gradient()->stops(), conicalBrush.gradient()->stops()); - QCOMPARE(cGrad.gradient()->spread(), conicalBrush.gradient()->spread()); - QCOMPARE(((QConicalGradient *)cGrad.gradient())->center(), ((QConicalGradient *)conicalBrush.gradient())->center()); - QCOMPARE(((QConicalGradient *)cGrad.gradient())->angle(), ((QConicalGradient *)conicalBrush.gradient())->angle()); - - QCOMPARE(cGrad, conicalBrush); - stream >> pen; - QCOMPARE(pen.widthF(), qreal(1.5)); - - QCOMPARE(stream.status(), QDataStream::Ok); - } -} - -void tst_QDataStream::compatibility_Qt3() -{ - QByteArray ba("hello"); - QVariant var = ba; - const quint32 invalidColor = 0x49000000; - QByteArray stream; - { - QDataStream out(&stream, QIODevice::WriteOnly); - out.setVersion(QDataStream::Qt_3_3); - out << var; - out << QColor(); - out << QColor(Qt::darkYellow); - out << QColor(Qt::darkCyan); - out << invalidColor; - } - { - QDataStream in(stream); - in.setVersion(QDataStream::Qt_3_3); - - quint32 type; - in >> type; - //29 is the type of a QByteArray in Qt3 - QCOMPARE(type, quint32(29)); - QByteArray ba2; - in >> ba2; - QCOMPARE(ba2, ba); - - quint32 color; - in >> color; - QCOMPARE(color, invalidColor); - in >> color; - QCOMPARE(color, QColor(Qt::darkYellow).rgb()); - QColor col; - in >> col; - QCOMPARE(col, QColor(Qt::darkCyan)); - in >> col; - QVERIFY(!col.isValid()); - } - { - QLinearGradient gradient(QPointF(0,0), QPointF(1,1)); - gradient.setColorAt(0, Qt::red); - gradient.setColorAt(1, Qt::blue); - - QBrush brush(gradient); - QPalette palette; - palette.setBrush(QPalette::Button, brush); - palette.setColor(QPalette::Light, Qt::green); - - QByteArray stream; - { - QDataStream out(&stream, QIODevice::WriteOnly); - out.setVersion(QDataStream::Qt_3_3); - out << palette; - out << brush; - } - QBrush in_brush; - QPalette in_palette; - { - QDataStream in(stream); - in.setVersion(QDataStream::Qt_3_3); - in >> in_palette; - in >> in_brush; - } - QCOMPARE(in_brush.style(), Qt::NoBrush); - QCOMPARE(in_palette.brush(QPalette::Button).style(), Qt::NoBrush); - QCOMPARE(in_palette.color(QPalette::Light), QColor(Qt::green)); - } - // QTime() was serialized to (0, 0, 0, 0) in Qt3, not (0xFF, 0xFF, 0xFF, 0xFF) - // This is because in Qt3 a null time was valid, and there was no support for deserializing a value of -1. - { - QByteArray stream; - { - QDataStream out(&stream, QIODevice::WriteOnly); - out.setVersion(QDataStream::Qt_3_3); - out << QTime(); - } - QTime in_time; - { - QDataStream in(stream); - in.setVersion(QDataStream::Qt_3_3); - in >> in_time; - } - QVERIFY(in_time.isNull()); - - quint32 rawValue; - QDataStream in(stream); - in.setVersion(QDataStream::Qt_3_3); - in >> rawValue; - QCOMPARE(rawValue, quint32(0)); - } - -} - -void tst_QDataStream::compatibility_Qt2() -{ - QLinearGradient gradient(QPointF(0,0), QPointF(1,1)); - gradient.setColorAt(0, Qt::red); - gradient.setColorAt(1, Qt::blue); - - QBrush brush(gradient); - QPalette palette; - palette.setBrush(QPalette::Button, brush); - palette.setColor(QPalette::Light, Qt::green); - - QByteArray stream; - { - QDataStream out(&stream, QIODevice::WriteOnly); - out.setVersion(QDataStream::Qt_2_1); - out << palette; - out << brush; - } - QBrush in_brush; - QPalette in_palette; - { - QDataStream in(stream); - in.setVersion(QDataStream::Qt_2_1); - in >> in_palette; - in >> in_brush; - } - QCOMPARE(in_brush.style(), Qt::NoBrush); - QCOMPARE(in_palette.brush(QPalette::Button).style(), Qt::NoBrush); - QCOMPARE(in_palette.color(QPalette::Light), QColor(Qt::green)); -} - -void tst_QDataStream::floatingPointNaN() -{ - QDataStream::ByteOrder bo = QSysInfo::ByteOrder == QSysInfo::BigEndian - ? QDataStream::LittleEndian - : QDataStream::BigEndian; - - // Test and verify that values that become (s)nan's after swapping endianness - // don't change in the process. - // When compiling with e.g., MSVC (32bit) and when the fpu is used (fp:precise) - // all snan's will be converted to qnan's (default behavior). - // IF we get a snan after swapping endianness we can not copy the value to another - // float as this will cause the value to differ from the original value. - QByteArray ba; - - union { - float f; - quint32 i; - } xs[2]; - - xs[0].i = qbswap(0xff800001); - xs[1].i = qbswap(0x7f800001); - - { - QDataStream stream(&ba, QIODevice::WriteOnly); - stream.setByteOrder(bo); - stream.setFloatingPointPrecision(QDataStream::SinglePrecision); - stream << xs[0].f; - stream << xs[1].f; - } - - { - QDataStream stream(ba); - stream.setByteOrder(bo); - stream.setFloatingPointPrecision(QDataStream::SinglePrecision); - float fr = 0.0f; - stream >> fr; - QCOMPARE(fr, xs[0].f); - stream >> fr; - QCOMPARE(fr, xs[1].f); - } -} - -void tst_QDataStream::floatingPointPrecision() -{ - QByteArray ba; - { - QDataStream stream(&ba, QIODevice::WriteOnly); - QCOMPARE(QDataStream::DoublePrecision, stream.floatingPointPrecision()); - - float f = 123.0f; - stream << f; - QCOMPARE(ba.size(), int(sizeof(double))); - - double d = 234.0; - stream << d; - QCOMPARE(ba.size(), int(sizeof(double)*2)); - - stream.setFloatingPointPrecision(QDataStream::SinglePrecision); - - f = 123.0f; - stream << f; - QCOMPARE(ba.size(), int(sizeof(double)*2 + sizeof(float))); - - d = 234.0; - stream << d; - QCOMPARE(ba.size(), int(sizeof(double)*2 + sizeof(float)*2)); - } - - { - QDataStream stream(ba); - - float f = 0.0f; - stream >> f; - QCOMPARE(123.0f, f); - - double d = 0.0; - stream >> d; - QCOMPARE(234.0, d); - - f = 0.0f; - stream.setFloatingPointPrecision(QDataStream::SinglePrecision); - stream >> f; - QCOMPARE(123.0f, f); - - d = 0.0; - stream >> d; - QCOMPARE(234.0, d); - } - -} - -void tst_QDataStream::transaction_data() -{ - QTest::addColumn("i8Data"); - QTest::addColumn("i16Data"); - QTest::addColumn("i32Data"); - QTest::addColumn("i64Data"); - QTest::addColumn("bData"); - QTest::addColumn("fData"); - QTest::addColumn("dData"); - QTest::addColumn("strData"); - QTest::addColumn("rawData"); - - QTest::newRow("1") << qint8(1) << qint16(2) << qint32(3) << qint64(4) << true << 5.0f - << double(6.0) << QByteArray("Hello world!") << QByteArray("Qt rocks!"); - QTest::newRow("2") << qint8(1 << 6) << qint16(1 << 14) << qint32(1 << 30) << qint64Data(3) << false << 123.0f - << double(234.0) << stringData(5).toUtf8() << stringData(6).toUtf8(); - QTest::newRow("3") << qint8(-1) << qint16(-2) << qint32(-3) << qint64(-4) << true << -123.0f - << double(-234.0) << stringData(3).toUtf8() << stringData(4).toUtf8(); -} - -void tst_QDataStream::transaction() -{ - QByteArray testBuffer; - - QFETCH(qint8, i8Data); - QFETCH(qint16, i16Data); - QFETCH(qint32, i32Data); - QFETCH(qint64, i64Data); - QFETCH(bool, bData); - QFETCH(float, fData); - QFETCH(double, dData); - QFETCH(QByteArray, strData); - QFETCH(QByteArray, rawData); - - { - QDataStream stream(&testBuffer, QIODevice::WriteOnly); - - stream << i8Data << i16Data << i32Data << i64Data - << bData << fData << dData << strData.constData(); - stream.writeRawData(rawData.constData(), rawData.size()); - } - - for (int splitPos = 0; splitPos <= testBuffer.size(); ++splitPos) { - QByteArray readBuffer(testBuffer.left(splitPos)); - SequentialBuffer dev(&readBuffer); - dev.open(QIODevice::ReadOnly); - QDataStream stream(&dev); - - qint8 i8; - qint16 i16; - qint32 i32; - qint64 i64; - bool b; - float f; - double d; - char *str; - QByteArray raw(rawData.size(), 0); - - forever { - stream.startTransaction(); - stream >> i8 >> i16 >> i32 >> i64 >> b >> f >> d >> str; - stream.readRawData(raw.data(), raw.size()); - - if (stream.commitTransaction()) - break; - - QVERIFY(stream.status() == QDataStream::ReadPastEnd); - QVERIFY(splitPos == 0 || !stream.atEnd()); - QVERIFY(readBuffer.size() < testBuffer.size()); - delete [] str; - raw.fill(0); - readBuffer.append(testBuffer.right(testBuffer.size() - splitPos)); - } - - QVERIFY(stream.atEnd()); - QCOMPARE(i8, i8Data); - QCOMPARE(i16, i16Data); - QCOMPARE(i32, i32Data); - QCOMPARE(i64, i64Data); - QCOMPARE(b, bData); - QCOMPARE(f, fData); - QCOMPARE(d, dData); - QVERIFY(strData == str); - delete [] str; - QCOMPARE(raw, rawData); - } -} - -void tst_QDataStream::nestedTransactionsResult_data() -{ - QTest::addColumn("commitFirst"); - QTest::addColumn("rollbackFirst"); - QTest::addColumn("commitSecond"); - QTest::addColumn("rollbackSecond"); - QTest::addColumn("successExpected"); - QTest::addColumn("expectedAtEnd"); - QTest::addColumn("expectedStatus"); - - QTest::newRow("1") << false << false << false << false - << false << true << int(QDataStream::ReadCorruptData); - QTest::newRow("2") << false << false << false << true - << false << true << int(QDataStream::ReadCorruptData); - QTest::newRow("3") << false << false << true << false - << false << true << int(QDataStream::ReadCorruptData); - - QTest::newRow("4") << false << true << false << false - << false << true << int(QDataStream::ReadCorruptData); - QTest::newRow("5") << false << true << false << true - << false << false << int(QDataStream::ReadPastEnd); - QTest::newRow("6") << false << true << true << false - << false << false << int(QDataStream::ReadPastEnd); - - QTest::newRow("7") << true << false << false << false - << false << true << int(QDataStream::ReadCorruptData); - QTest::newRow("8") << true << false << false << true - << false << false << int(QDataStream::ReadPastEnd); - QTest::newRow("9") << true << false << true << false - << true << true << int(QDataStream::Ok); -} - -void tst_QDataStream::nestedTransactionsResult() -{ - QByteArray testBuffer(1, 0); - QDataStream stream(&testBuffer, QIODevice::ReadOnly); - uchar c; - - QFETCH(bool, commitFirst); - QFETCH(bool, rollbackFirst); - QFETCH(bool, commitSecond); - QFETCH(bool, rollbackSecond); - QFETCH(bool, successExpected); - QFETCH(bool, expectedAtEnd); - QFETCH(int, expectedStatus); - - stream.startTransaction(); - stream.startTransaction(); - stream >> c; - - if (commitFirst) - QVERIFY(stream.commitTransaction()); - else if (rollbackFirst) - stream.rollbackTransaction(); - else - stream.abortTransaction(); - - stream.startTransaction(); - - if (commitSecond) - QCOMPARE(stream.commitTransaction(), commitFirst); - else if (rollbackSecond) - stream.rollbackTransaction(); - else - stream.abortTransaction(); - - QCOMPARE(stream.commitTransaction(), successExpected); - QCOMPARE(stream.atEnd(), expectedAtEnd); - QCOMPARE(int(stream.status()), expectedStatus); -} - -QTEST_MAIN(tst_QDataStream) -#include "tst_qdatastream.moc" - diff --git a/tests/auto/corelib/io/qtextstream/.gitattributes b/tests/auto/corelib/io/qtextstream/.gitattributes deleted file mode 100644 index eb78a3cecf..0000000000 --- a/tests/auto/corelib/io/qtextstream/.gitattributes +++ /dev/null @@ -1,3 +0,0 @@ -rfc3261.txt -crlf -task113817.txt -crlf -shift-jis.txt -crlf diff --git a/tests/auto/corelib/io/qtextstream/.gitignore b/tests/auto/corelib/io/qtextstream/.gitignore deleted file mode 100644 index 01f26ae749..0000000000 --- a/tests/auto/corelib/io/qtextstream/.gitignore +++ /dev/null @@ -1,11 +0,0 @@ -bom.txt -out.txt -readAllStdinProcess/readAllStdinProcess -readAllStdinProcess/readAllStdinProcess.exe -readLineStdinProcess/readLineStdinProcess -readLineStdinProcess/readLineStdinProcess.exe -stdinProcess/stdinProcess -stdinProcess/stdinProcess.exe -testfile -tst_qtextstream -utf8bom diff --git a/tests/auto/corelib/io/qtextstream/BLACKLIST b/tests/auto/corelib/io/qtextstream/BLACKLIST deleted file mode 100644 index b54b53cd74..0000000000 --- a/tests/auto/corelib/io/qtextstream/BLACKLIST +++ /dev/null @@ -1,3 +0,0 @@ -[stillOpenWhenAtEnd] -windows -winrt diff --git a/tests/auto/corelib/io/qtextstream/qtextstream.pro b/tests/auto/corelib/io/qtextstream/qtextstream.pro deleted file mode 100644 index 19853b74ad..0000000000 --- a/tests/auto/corelib/io/qtextstream/qtextstream.pro +++ /dev/null @@ -1,2 +0,0 @@ -TEMPLATE = subdirs -SUBDIRS = test stdinProcess readAllStdinProcess readLineStdinProcess diff --git a/tests/auto/corelib/io/qtextstream/qtextstream.qrc b/tests/auto/corelib/io/qtextstream/qtextstream.qrc deleted file mode 100644 index a750e35d4a..0000000000 --- a/tests/auto/corelib/io/qtextstream/qtextstream.qrc +++ /dev/null @@ -1,6 +0,0 @@ - - - resources/big_endian/ - resources/little_endian/ - - diff --git a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp deleted file mode 100644 index 08d2bf8183..0000000000 --- a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/main.cpp +++ /dev/null @@ -1,37 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include -#include - -int main(int, char**) -{ - fprintf(stderr, "%s\n", QTextStream(stdin).readAll().toLatin1().constData()); - return 0; -} diff --git a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro b/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro deleted file mode 100644 index 4a4c091dcb..0000000000 --- a/tests/auto/corelib/io/qtextstream/readAllStdinProcess/readAllStdinProcess.pro +++ /dev/null @@ -1,9 +0,0 @@ -SOURCES += main.cpp -QT = core -CONFIG += console -CONFIG -= app_bundle -DESTDIR = ./ - -# This app is testdata for tst_qtextstream -target.path = $$[QT_INSTALL_TESTS]/tst_qtextstream/$$TARGET -INSTALLS += target diff --git a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp deleted file mode 100644 index 41ea5e56f0..0000000000 --- a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/main.cpp +++ /dev/null @@ -1,47 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include -#include -#include - - -int main(int argc, char **argv) -{ - QCoreApplication a(argc, argv); - QTextStream qin(stdin); - QTextStream qerr(stderr); - QString line; - do { - line = qin.readLine(); - if (!line.isNull()) - qerr << line << flush; - } while (!line.isNull()); - return 0; -} diff --git a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro b/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro deleted file mode 100644 index 4a4c091dcb..0000000000 --- a/tests/auto/corelib/io/qtextstream/readLineStdinProcess/readLineStdinProcess.pro +++ /dev/null @@ -1,9 +0,0 @@ -SOURCES += main.cpp -QT = core -CONFIG += console -CONFIG -= app_bundle -DESTDIR = ./ - -# This app is testdata for tst_qtextstream -target.path = $$[QT_INSTALL_TESTS]/tst_qtextstream/$$TARGET -INSTALLS += target diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data deleted file mode 100644 index 849ecb39ed..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data deleted file mode 100644 index 8b9647f06f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data deleted file mode 100644 index d73722e724..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index fcb209d377..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 7939963f78..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index d155ca2863..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data deleted file mode 100644 index 104e45f940..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data deleted file mode 100644 index 3135276780..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data deleted file mode 100644 index 993d0b9e19..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_0.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_1.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data deleted file mode 100644 index fcb209d377..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data deleted file mode 100644 index 7939963f78..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data deleted file mode 100644 index d155ca2863..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QByteArray_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data deleted file mode 100644 index fa7af8bf5f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ -z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data deleted file mode 100644 index b516b2c489..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -@ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data deleted file mode 100644 index fa7af8bf5f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ -z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data deleted file mode 100644 index b516b2c489..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -@ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data deleted file mode 100644 index 6def16c99e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data deleted file mode 100644 index 57302ad8e7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data deleted file mode 100644 index 239c14d498..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data deleted file mode 100644 index 8fbd3327c8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data deleted file mode 100644 index d745e1be7b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index db52135603..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 0a4ca93c16..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e7c7d5a76b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 7501b59181..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 1565aaa95f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data deleted file mode 100644 index 9ac3ad9a6b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data deleted file mode 100644 index bb28df16b9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data deleted file mode 100644 index 8c0f57437b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data deleted file mode 100644 index d494004e64..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data deleted file mode 100644 index de421979ea..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data deleted file mode 100644 index fa7af8bf5f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ -z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data deleted file mode 100644 index b516b2c489..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -@ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data deleted file mode 100644 index db52135603..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data deleted file mode 100644 index 0a4ca93c16..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data deleted file mode 100644 index e7c7d5a76b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data deleted file mode 100644 index 7501b59181..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data deleted file mode 100644 index 1565aaa95f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QChar_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data deleted file mode 100644 index 849ecb39ed..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data deleted file mode 100644 index 8b9647f06f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data deleted file mode 100644 index d73722e724..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index fcb209d377..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 7939963f78..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index d155ca2863..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data deleted file mode 100644 index 104e45f940..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data deleted file mode 100644 index 3135276780..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data deleted file mode 100644 index 993d0b9e19..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_0.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_1.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data deleted file mode 100644 index fcb209d377..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data deleted file mode 100644 index 7939963f78..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data deleted file mode 100644 index d155ca2863..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_QString_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data deleted file mode 100644 index 9280c0d31d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data deleted file mode 100644 index c227083464..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data deleted file mode 100644 index 9280c0d31d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data deleted file mode 100644 index c227083464..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data deleted file mode 100644 index 6def16c99e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data deleted file mode 100644 index 57302ad8e7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data deleted file mode 100644 index 239c14d498..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data deleted file mode 100644 index 819b31d1f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data deleted file mode 100644 index a6ff072af1..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index db52135603..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 0a4ca93c16..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e7c7d5a76b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index bf9cec8ea7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index ec4665f7ff..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data deleted file mode 100644 index 9ac3ad9a6b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data deleted file mode 100644 index bb28df16b9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data deleted file mode 100644 index 8c0f57437b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data deleted file mode 100644 index 878dc8a26e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data deleted file mode 100644 index fd0779e0f3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data deleted file mode 100644 index 9280c0d31d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data deleted file mode 100644 index c227083464..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data deleted file mode 100644 index db52135603..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data deleted file mode 100644 index 0a4ca93c16..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data deleted file mode 100644 index e7c7d5a76b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data deleted file mode 100644 index bf9cec8ea7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data deleted file mode 100644 index ec4665f7ff..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_char_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data deleted file mode 100644 index 80aed3622e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_5.data +++ /dev/null @@ -1 +0,0 @@ - A 1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data deleted file mode 100644 index aec027753d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Latin1_6.data +++ /dev/null @@ -1 +0,0 @@ - A -1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data deleted file mode 100644 index 80aed3622e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_5.data +++ /dev/null @@ -1 +0,0 @@ - A 1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data deleted file mode 100644 index aec027753d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Locale_6.data +++ /dev/null @@ -1 +0,0 @@ - A -1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data deleted file mode 100644 index 67ce8d83c8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data deleted file mode 100644 index 9662a9aaa1..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data deleted file mode 100644 index a74511b101..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data deleted file mode 100644 index bdc06a6ec2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data deleted file mode 100644 index 79b15d4d8a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data deleted file mode 100644 index 2141e65843..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_RawUnicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 61cc689e1e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index cf914bc67e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 5e08ff706a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index b6f4541bb8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data deleted file mode 100644 index f4a50d829a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data deleted file mode 100644 index 2d8f67152c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data deleted file mode 100644 index e6b94bbeb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data deleted file mode 100644 index fb0a550264..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data deleted file mode 100644 index 48fe53930f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data deleted file mode 100644 index 811e93212d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data deleted file mode 100644 index 7041fa9b4d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data deleted file mode 100644 index 9fd21fade0..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeReverse_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data deleted file mode 100644 index 80aed3622e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_5.data +++ /dev/null @@ -1 +0,0 @@ - A 1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data deleted file mode 100644 index aec027753d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_UnicodeUTF8_6.data +++ /dev/null @@ -1 +0,0 @@ - A -1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data deleted file mode 100644 index 61cc689e1e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data deleted file mode 100644 index cf914bc67e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data deleted file mode 100644 index 5e08ff706a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data deleted file mode 100644 index b6f4541bb8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data deleted file mode 100644 index f4a50d829a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data deleted file mode 100644 index 2d8f67152c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_double_resource_Unicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data deleted file mode 100644 index 67ce8d83c8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data deleted file mode 100644 index 9662a9aaa1..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data deleted file mode 100644 index a74511b101..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data deleted file mode 100644 index bdc06a6ec2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 61cc689e1e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index cf914bc67e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 5e08ff706a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index b6f4541bb8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data deleted file mode 100644 index e6b94bbeb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data deleted file mode 100644 index fb0a550264..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data deleted file mode 100644 index 48fe53930f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data deleted file mode 100644 index 811e93212d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data deleted file mode 100644 index 61cc689e1e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data deleted file mode 100644 index cf914bc67e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data deleted file mode 100644 index 5e08ff706a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data deleted file mode 100644 index b6f4541bb8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_float_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data deleted file mode 100644 index f4aefab396..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Latin1_8.data +++ /dev/null @@ -1 +0,0 @@ - A -512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data deleted file mode 100644 index f4aefab396..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Locale_8.data +++ /dev/null @@ -1 +0,0 @@ - A -512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data deleted file mode 100644 index 815d4fc7db..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data deleted file mode 100644 index c933a04c07..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data deleted file mode 100644 index 69de5ef2bd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data deleted file mode 100644 index c45139955a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data deleted file mode 100644 index 396352f4d6..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data deleted file mode 100644 index ea73fac731..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data deleted file mode 100644 index 1f4f1a58de..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data deleted file mode 100644 index 9469ca407f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_RawUnicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data deleted file mode 100644 index 18c3344c26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data deleted file mode 100644 index 5193701ae3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data deleted file mode 100644 index fab38d24ef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data deleted file mode 100644 index ebb14b2fbd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data deleted file mode 100644 index a9e1432ca9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data deleted file mode 100644 index b7e6743c28..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeReverse_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data deleted file mode 100644 index f4aefab396..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_UnicodeUTF8_8.data +++ /dev/null @@ -1 +0,0 @@ - A -512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data deleted file mode 100644 index 18c3344c26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data deleted file mode 100644 index 5193701ae3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data deleted file mode 100644 index fab38d24ef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_int_resource_Unicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data deleted file mode 100644 index cab2ee4938..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Latin1_8.data +++ /dev/null @@ -1 +0,0 @@ - A -65534 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data deleted file mode 100644 index cab2ee4938..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Locale_8.data +++ /dev/null @@ -1 +0,0 @@ - A -65534 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data deleted file mode 100644 index 815d4fc7db..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data deleted file mode 100644 index c933a04c07..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data deleted file mode 100644 index 69de5ef2bd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data deleted file mode 100644 index 40269f4e0c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data deleted file mode 100644 index 396352f4d6..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data deleted file mode 100644 index ea73fac731..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data deleted file mode 100644 index 1f4f1a58de..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data deleted file mode 100644 index e8051f8906..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_RawUnicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index e50e2d02a9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data deleted file mode 100644 index 18c3344c26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data deleted file mode 100644 index 5193701ae3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data deleted file mode 100644 index 5a9cb07f57..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data deleted file mode 100644 index e20c76a82c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data deleted file mode 100644 index ebb14b2fbd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data deleted file mode 100644 index a9e1432ca9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data deleted file mode 100644 index f8ec5bc443..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeReverse_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data deleted file mode 100644 index cab2ee4938..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_UnicodeUTF8_8.data +++ /dev/null @@ -1 +0,0 @@ - A -65534 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data deleted file mode 100644 index e50e2d02a9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data deleted file mode 100644 index 18c3344c26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data deleted file mode 100644 index 5193701ae3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data deleted file mode 100644 index 5a9cb07f57..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_long_resource_Unicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data deleted file mode 100644 index 02b7f3ab7b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A -254 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data deleted file mode 100644 index 02b7f3ab7b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A -254 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data deleted file mode 100644 index 396352f4d6..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data deleted file mode 100644 index 815d4fc7db..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data deleted file mode 100644 index 69de5ef2bd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data deleted file mode 100644 index 0dc83d2713..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index b951b56531..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data deleted file mode 100644 index 80d3ca2ef1..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data deleted file mode 100644 index 02b7f3ab7b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A -254 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data deleted file mode 100644 index b951b56531..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_short_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data deleted file mode 100644 index 815d4fc7db..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data deleted file mode 100644 index c933a04c07..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data deleted file mode 100644 index 69de5ef2bd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data deleted file mode 100644 index c45139955a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_uint_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data deleted file mode 100644 index 815d4fc7db..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data deleted file mode 100644 index c933a04c07..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data deleted file mode 100644 index 69de5ef2bd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data deleted file mode 100644 index 40269f4e0c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index e50e2d02a9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data deleted file mode 100644 index e20c76a82c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data deleted file mode 100644 index e50e2d02a9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ulong_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data deleted file mode 100644 index feac21f921..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data deleted file mode 100644 index 815d4fc7db..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data deleted file mode 100644 index c933a04c07..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data deleted file mode 100644 index 69de5ef2bd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data deleted file mode 100644 index c45139955a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shift_ushort_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource0.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource1.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data deleted file mode 100644 index 597f94465c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource10.data +++ /dev/null @@ -1 +0,0 @@ -I-am-a-string \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data deleted file mode 100644 index 597f94465c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource11.data +++ /dev/null @@ -1 +0,0 @@ -I-am-a-string \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data deleted file mode 100644 index 597f94465c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource12.data +++ /dev/null @@ -1 +0,0 @@ -I-am-a-string \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource2.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data deleted file mode 100644 index b9e3a5a7c7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource20.data +++ /dev/null @@ -1 +0,0 @@ -フ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data deleted file mode 100644 index 7014dc882f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource21.data +++ /dev/null @@ -1 +0,0 @@ -賿 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource3.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource4.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource5.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource6.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource7.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data deleted file mode 100644 index 4f3af7006e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource8.data +++ /dev/null @@ -1 +0,0 @@ -3.1415 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data b/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data deleted file mode 100644 index 4f3af7006e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/big_endian/operator_shiftright_resource9.data +++ /dev/null @@ -1 +0,0 @@ -3.1415 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data deleted file mode 100644 index 4d5bdc553e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data deleted file mode 100644 index 3cf181c23c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data deleted file mode 100644 index f7f74e56a0..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_0.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index e2df5e2ee7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_1.data +++ /dev/null @@ -1 +0,0 @@ -þÿ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index fcb209d377..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 7939963f78..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index d155ca2863..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_0.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_1.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data deleted file mode 100644 index 104e45f940..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data deleted file mode 100644 index 3135276780..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data deleted file mode 100644 index 993d0b9e19..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_0.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_1.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data deleted file mode 100644 index 104e45f940..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data deleted file mode 100644 index 3135276780..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data deleted file mode 100644 index 993d0b9e19..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QByteArray_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data deleted file mode 100644 index fa7af8bf5f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ -z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data deleted file mode 100644 index b516b2c489..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -@ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data deleted file mode 100644 index fa7af8bf5f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ -z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data deleted file mode 100644 index b516b2c489..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -@ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data deleted file mode 100644 index e2b43e3781..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data deleted file mode 100644 index 962fc922ad..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data deleted file mode 100644 index 839cc09ec8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data deleted file mode 100644 index f71ac66a63..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data deleted file mode 100644 index 88f99805e3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index db52135603..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 0a4ca93c16..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e7c7d5a76b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 7501b59181..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 1565aaa95f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data deleted file mode 100644 index 9ac3ad9a6b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data deleted file mode 100644 index bb28df16b9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data deleted file mode 100644 index 8c0f57437b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data deleted file mode 100644 index d494004e64..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data deleted file mode 100644 index de421979ea..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data deleted file mode 100644 index fa7af8bf5f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ -z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data deleted file mode 100644 index b516b2c489..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -@ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data deleted file mode 100644 index 9ac3ad9a6b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data deleted file mode 100644 index bb28df16b9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data deleted file mode 100644 index 8c0f57437b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data deleted file mode 100644 index d494004e64..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data deleted file mode 100644 index de421979ea..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QChar_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data deleted file mode 100644 index 4d5bdc553e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data deleted file mode 100644 index 3cf181c23c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data deleted file mode 100644 index f7f74e56a0..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index fcb209d377..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 7939963f78..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index d155ca2863..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_0.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_1.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data deleted file mode 100644 index 104e45f940..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data deleted file mode 100644 index 3135276780..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data deleted file mode 100644 index 993d0b9e19..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_0.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_1.data deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1910281566..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -foo \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data deleted file mode 100644 index a907ec3f43..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1,2 +0,0 @@ -foo -bar \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data deleted file mode 100644 index 61cd46aacc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -cjacka ckha cka ckah ckac kahckadhcbkgdk vkzdfbvajef vkahv \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_0.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data deleted file mode 100644 index 46b134b197..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_1.data +++ /dev/null @@ -1 +0,0 @@ -ÿþ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data deleted file mode 100644 index 104e45f940..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data deleted file mode 100644 index 3135276780..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data deleted file mode 100644 index 993d0b9e19..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_QString_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data deleted file mode 100644 index 9280c0d31d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data deleted file mode 100644 index c227083464..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data deleted file mode 100644 index 9280c0d31d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data deleted file mode 100644 index c227083464..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data deleted file mode 100644 index e2b43e3781..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data deleted file mode 100644 index 962fc922ad..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data deleted file mode 100644 index 839cc09ec8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data deleted file mode 100644 index c33473a370..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data deleted file mode 100644 index def7fcb589..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index db52135603..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 0a4ca93c16..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e7c7d5a76b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index bf9cec8ea7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index ec4665f7ff..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data deleted file mode 100644 index 9ac3ad9a6b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data deleted file mode 100644 index bb28df16b9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data deleted file mode 100644 index 8c0f57437b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data deleted file mode 100644 index 878dc8a26e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data deleted file mode 100644 index fd0779e0f3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data deleted file mode 100644 index 8c7e5a667f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ -A \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data deleted file mode 100644 index 7371f47a6f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ -B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data deleted file mode 100644 index 9280c0d31d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data deleted file mode 100644 index c227083464..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ -0 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data deleted file mode 100644 index 9ac3ad9a6b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data deleted file mode 100644 index bb28df16b9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data deleted file mode 100644 index 8c0f57437b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data deleted file mode 100644 index 878dc8a26e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data deleted file mode 100644 index fd0779e0f3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_char_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data deleted file mode 100644 index 80aed3622e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_5.data +++ /dev/null @@ -1 +0,0 @@ - A 1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data deleted file mode 100644 index aec027753d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Latin1_6.data +++ /dev/null @@ -1 +0,0 @@ - A -1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data deleted file mode 100644 index 80aed3622e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_5.data +++ /dev/null @@ -1 +0,0 @@ - A 1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data deleted file mode 100644 index aec027753d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Locale_6.data +++ /dev/null @@ -1 +0,0 @@ - A -1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data deleted file mode 100644 index fb911f7352..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data deleted file mode 100644 index efbc06bf26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data deleted file mode 100644 index 4d857caa13..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data deleted file mode 100644 index b125e2084f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data deleted file mode 100644 index f39fbde113..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data deleted file mode 100644 index 5436b427ed..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_RawUnicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 61cc689e1e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index cf914bc67e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 5e08ff706a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index b6f4541bb8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data deleted file mode 100644 index f4a50d829a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data deleted file mode 100644 index 2d8f67152c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeNetworkOrder_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data deleted file mode 100644 index e6b94bbeb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data deleted file mode 100644 index fb0a550264..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data deleted file mode 100644 index 48fe53930f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data deleted file mode 100644 index 811e93212d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data deleted file mode 100644 index 7041fa9b4d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data deleted file mode 100644 index 9fd21fade0..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeReverse_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data deleted file mode 100644 index 80aed3622e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_5.data +++ /dev/null @@ -1 +0,0 @@ - A 1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data deleted file mode 100644 index aec027753d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_UnicodeUTF8_6.data +++ /dev/null @@ -1 +0,0 @@ - A -1.23456789 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data deleted file mode 100644 index e6b94bbeb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data deleted file mode 100644 index fb0a550264..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data deleted file mode 100644 index 48fe53930f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data deleted file mode 100644 index 811e93212d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data deleted file mode 100644 index 7041fa9b4d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data deleted file mode 100644 index 9fd21fade0..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_double_resource_Unicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data deleted file mode 100644 index fb911f7352..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data deleted file mode 100644 index efbc06bf26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data deleted file mode 100644 index 4d857caa13..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data deleted file mode 100644 index b125e2084f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index 61cc689e1e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index cf914bc67e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 5e08ff706a..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index b6f4541bb8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data deleted file mode 100644 index e6b94bbeb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data deleted file mode 100644 index fb0a550264..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data deleted file mode 100644 index 48fe53930f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data deleted file mode 100644 index 811e93212d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data deleted file mode 100644 index d2fa166d7d..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data deleted file mode 100644 index 1d0fa9e6a6..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A -0.0001 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data deleted file mode 100644 index e47d45c143..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data deleted file mode 100644 index 47ce07d283..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A -3.45678 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data deleted file mode 100644 index e6b94bbeb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data deleted file mode 100644 index fb0a550264..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data deleted file mode 100644 index 48fe53930f..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data deleted file mode 100644 index 811e93212d..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_float_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data deleted file mode 100644 index f4aefab396..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Latin1_8.data +++ /dev/null @@ -1 +0,0 @@ - A -512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data deleted file mode 100644 index f4aefab396..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Locale_8.data +++ /dev/null @@ -1 +0,0 @@ - A -512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data deleted file mode 100644 index ee113d1cf3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data deleted file mode 100644 index 1e07040ef4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data deleted file mode 100644 index cc7ab7dff8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data deleted file mode 100644 index 450072bc4e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data deleted file mode 100644 index 73f5f259f8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data deleted file mode 100644 index 9805422dfb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data deleted file mode 100644 index 77f557a494..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data deleted file mode 100644 index 8dd6a4b38e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_RawUnicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data deleted file mode 100644 index 18c3344c26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data deleted file mode 100644 index 5193701ae3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data deleted file mode 100644 index fab38d24ef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeNetworkOrder_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data deleted file mode 100644 index ebb14b2fbd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data deleted file mode 100644 index a9e1432ca9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data deleted file mode 100644 index b7e6743c28..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeReverse_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data deleted file mode 100644 index f4aefab396..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_UnicodeUTF8_8.data +++ /dev/null @@ -1 +0,0 @@ - A -512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data deleted file mode 100644 index ebb14b2fbd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data deleted file mode 100644 index a9e1432ca9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data deleted file mode 100644 index b7e6743c28..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_int_resource_Unicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data deleted file mode 100644 index cab2ee4938..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Latin1_8.data +++ /dev/null @@ -1 +0,0 @@ - A -65534 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data deleted file mode 100644 index cab2ee4938..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Locale_8.data +++ /dev/null @@ -1 +0,0 @@ - A -65534 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data deleted file mode 100644 index ee113d1cf3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data deleted file mode 100644 index 1e07040ef4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data deleted file mode 100644 index cc7ab7dff8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data deleted file mode 100644 index beea1c3663..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data deleted file mode 100644 index 73f5f259f8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data deleted file mode 100644 index 9805422dfb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data deleted file mode 100644 index 77f557a494..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data deleted file mode 100644 index be6f22a5ea..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_RawUnicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index e50e2d02a9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data deleted file mode 100644 index 18c3344c26..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data deleted file mode 100644 index 5193701ae3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data deleted file mode 100644 index 5a9cb07f57..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeNetworkOrder_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data deleted file mode 100644 index e20c76a82c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data deleted file mode 100644 index ebb14b2fbd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data deleted file mode 100644 index a9e1432ca9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data deleted file mode 100644 index f8ec5bc443..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeReverse_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_5.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data deleted file mode 100644 index f171cb6c0c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_6.data +++ /dev/null @@ -1 +0,0 @@ - A -10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data deleted file mode 100644 index de18d40ee8..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_7.data +++ /dev/null @@ -1 +0,0 @@ - A -255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data deleted file mode 100644 index cab2ee4938..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_UnicodeUTF8_8.data +++ /dev/null @@ -1 +0,0 @@ - A -65534 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data deleted file mode 100644 index e20c76a82c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_5.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data deleted file mode 100644 index ebb14b2fbd..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_6.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data deleted file mode 100644 index a9e1432ca9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_7.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data deleted file mode 100644 index f8ec5bc443..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_long_resource_Unicode_8.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data deleted file mode 100644 index 02b7f3ab7b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A -254 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data deleted file mode 100644 index 02b7f3ab7b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A -254 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data deleted file mode 100644 index 73f5f259f8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data deleted file mode 100644 index ee113d1cf3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data deleted file mode 100644 index cc7ab7dff8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data deleted file mode 100644 index 584b17ea18..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index c52b277d9c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index b951b56531..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data deleted file mode 100644 index 80d3ca2ef1..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data deleted file mode 100644 index ef70e7dc3a..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A -1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data deleted file mode 100644 index 02b7f3ab7b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A -254 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data deleted file mode 100644 index 95742ec8f2..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data deleted file mode 100644 index 80d3ca2ef1..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_short_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data deleted file mode 100644 index ee113d1cf3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data deleted file mode 100644 index 1e07040ef4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data deleted file mode 100644 index cc7ab7dff8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data deleted file mode 100644 index 450072bc4e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_uint_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data deleted file mode 100644 index ee113d1cf3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data deleted file mode 100644 index 1e07040ef4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data deleted file mode 100644 index cc7ab7dff8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data deleted file mode 100644 index beea1c3663..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index e50e2d02a9..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data deleted file mode 100644 index e20c76a82c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data deleted file mode 100644 index f667f77c45..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 65535 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data deleted file mode 100644 index e20c76a82c..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ulong_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Latin1_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Locale_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data deleted file mode 100644 index 775ae0f25b..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data deleted file mode 100644 index ee113d1cf3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data deleted file mode 100644 index 1e07040ef4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data deleted file mode 100644 index cc7ab7dff8..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data deleted file mode 100644 index 450072bc4e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_RawUnicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data deleted file mode 100644 index 2262f5ecdb..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data deleted file mode 100644 index d7a098948e..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data deleted file mode 100644 index e333a695b7..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data deleted file mode 100644 index 18bb47b042..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data deleted file mode 100644 index 9a9a22daef..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeNetworkOrder_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeReverse_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data deleted file mode 100644 index 35282318cb..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_0.data +++ /dev/null @@ -1 +0,0 @@ - A 0 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data deleted file mode 100644 index 30c3a50213..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_1.data +++ /dev/null @@ -1 +0,0 @@ - A 1 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data deleted file mode 100644 index 9d64c07ef2..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_2.data +++ /dev/null @@ -1 +0,0 @@ - A 10 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data deleted file mode 100644 index 6b37eb602b..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_3.data +++ /dev/null @@ -1 +0,0 @@ - A 255 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data deleted file mode 100644 index c0e22423bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_UnicodeUTF8_4.data +++ /dev/null @@ -1 +0,0 @@ - A 512 B \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data deleted file mode 100644 index 379e87b914..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_0.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data deleted file mode 100644 index 2785156fb3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_1.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data deleted file mode 100644 index 6dc818abc3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_2.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data deleted file mode 100644 index d41a1f75d3..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_3.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data deleted file mode 100644 index f5a0d874d4..0000000000 Binary files a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shift_ushort_resource_Unicode_4.data and /dev/null differ diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource0.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data deleted file mode 100644 index 0f13712411..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource1.data +++ /dev/null @@ -1 +0,0 @@ -Z \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data deleted file mode 100644 index 597f94465c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource10.data +++ /dev/null @@ -1 +0,0 @@ -I-am-a-string \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data deleted file mode 100644 index 597f94465c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource11.data +++ /dev/null @@ -1 +0,0 @@ -I-am-a-string \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data deleted file mode 100644 index 597f94465c..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource12.data +++ /dev/null @@ -1 +0,0 @@ -I-am-a-string \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource2.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data deleted file mode 100644 index b9e3a5a7c7..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource20.data +++ /dev/null @@ -1 +0,0 @@ -フ \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data deleted file mode 100644 index 7014dc882f..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource21.data +++ /dev/null @@ -1 +0,0 @@ -賿 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource3.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource4.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource5.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource6.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data deleted file mode 100644 index bd41cba781..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource7.data +++ /dev/null @@ -1 +0,0 @@ -12345 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data deleted file mode 100644 index 4f3af7006e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource8.data +++ /dev/null @@ -1 +0,0 @@ -3.1415 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data b/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data deleted file mode 100644 index 4f3af7006e..0000000000 --- a/tests/auto/corelib/io/qtextstream/resources/little_endian/operator_shiftright_resource9.data +++ /dev/null @@ -1 +0,0 @@ -3.1415 \ No newline at end of file diff --git a/tests/auto/corelib/io/qtextstream/rfc3261.txt b/tests/auto/corelib/io/qtextstream/rfc3261.txt deleted file mode 100644 index 4cf4df93bc..0000000000 --- a/tests/auto/corelib/io/qtextstream/rfc3261.txt +++ /dev/null @@ -1,15067 +0,0 @@ - - - - - - -Network Working Group J. Rosenberg -Request for Comments: 3261 dynamicsoft -Obsoletes: 2543 H. Schulzrinne -Category: Standards Track Columbia U. - G. Camarillo - Ericsson - A. Johnston - WorldCom - J. Peterson - Neustar - R. Sparks - dynamicsoft - M. Handley - ICIR - E. Schooler - AT&T - June 2002 - - SIP: Session Initiation Protocol - -Status of this Memo - - This document specifies an Internet standards track protocol for the - Internet community, and requests discussion and suggestions for - improvements. Please refer to the current edition of the "Internet - Official Protocol Standards" (STD 1) for the standardization state - and status of this protocol. Distribution of this memo is unlimited. - -Copyright Notice - - Copyright (C) The Internet Society (2002). All Rights Reserved. - -Abstract - - This document describes Session Initiation Protocol (SIP), an - application-layer control (signaling) protocol for creating, - modifying, and terminating sessions with one or more participants. - These sessions include Internet telephone calls, multimedia - distribution, and multimedia conferences. - - SIP invitations used to create sessions carry session descriptions - that allow participants to agree on a set of compatible media types. - SIP makes use of elements called proxy servers to help route requests - to the user's current location, authenticate and authorize users for - services, implement provider call-routing policies, and provide - features to users. SIP also provides a registration function that - allows users to upload their current locations for use by proxy - servers. SIP runs on top of several different transport protocols. - - - -Rosenberg, et. al. Standards Track [Page 1] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Table of Contents - - 1 Introduction ........................................ 8 - 2 Overview of SIP Functionality ....................... 9 - 3 Terminology ......................................... 10 - 4 Overview of Operation ............................... 10 - 5 Structure of the Protocol ........................... 18 - 6 Definitions ......................................... 20 - 7 SIP Messages ........................................ 26 - 7.1 Requests ............................................ 27 - 7.2 Responses ........................................... 28 - 7.3 Header Fields ....................................... 29 - 7.3.1 Header Field Format ................................. 30 - 7.3.2 Header Field Classification ......................... 32 - 7.3.3 Compact Form ........................................ 32 - 7.4 Bodies .............................................. 33 - 7.4.1 Message Body Type ................................... 33 - 7.4.2 Message Body Length ................................. 33 - 7.5 Framing SIP Messages ................................ 34 - 8 General User Agent Behavior ......................... 34 - 8.1 UAC Behavior ........................................ 35 - 8.1.1 Generating the Request .............................. 35 - 8.1.1.1 Request-URI ......................................... 35 - 8.1.1.2 To .................................................. 36 - 8.1.1.3 From ................................................ 37 - 8.1.1.4 Call-ID ............................................. 37 - 8.1.1.5 CSeq ................................................ 38 - 8.1.1.6 Max-Forwards ........................................ 38 - 8.1.1.7 Via ................................................. 39 - 8.1.1.8 Contact ............................................. 40 - 8.1.1.9 Supported and Require ............................... 40 - 8.1.1.10 Additional Message Components ....................... 41 - 8.1.2 Sending the Request ................................. 41 - 8.1.3 Processing Responses ................................ 42 - 8.1.3.1 Transaction Layer Errors ............................ 42 - 8.1.3.2 Unrecognized Responses .............................. 42 - 8.1.3.3 Vias ................................................ 43 - 8.1.3.4 Processing 3xx Responses ............................ 43 - 8.1.3.5 Processing 4xx Responses ............................ 45 - 8.2 UAS Behavior ........................................ 46 - 8.2.1 Method Inspection ................................... 46 - 8.2.2 Header Inspection ................................... 46 - 8.2.2.1 To and Request-URI .................................. 46 - 8.2.2.2 Merged Requests ..................................... 47 - 8.2.2.3 Require ............................................. 47 - 8.2.3 Content Processing .................................. 48 - 8.2.4 Applying Extensions ................................. 49 - 8.2.5 Processing the Request .............................. 49 - - - -Rosenberg, et. al. Standards Track [Page 2] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 8.2.6 Generating the Response ............................. 49 - 8.2.6.1 Sending a Provisional Response ...................... 49 - 8.2.6.2 Headers and Tags .................................... 50 - 8.2.7 Stateless UAS Behavior .............................. 50 - 8.3 Redirect Servers .................................... 51 - 9 Canceling a Request ................................. 53 - 9.1 Client Behavior ..................................... 53 - 9.2 Server Behavior ..................................... 55 - 10 Registrations ....................................... 56 - 10.1 Overview ............................................ 56 - 10.2 Constructing the REGISTER Request ................... 57 - 10.2.1 Adding Bindings ..................................... 59 - 10.2.1.1 Setting the Expiration Interval of Contact Addresses 60 - 10.2.1.2 Preferences among Contact Addresses ................. 61 - 10.2.2 Removing Bindings ................................... 61 - 10.2.3 Fetching Bindings ................................... 61 - 10.2.4 Refreshing Bindings ................................. 61 - 10.2.5 Setting the Internal Clock .......................... 62 - 10.2.6 Discovering a Registrar ............................. 62 - 10.2.7 Transmitting a Request .............................. 62 - 10.2.8 Error Responses ..................................... 63 - 10.3 Processing REGISTER Requests ........................ 63 - 11 Querying for Capabilities ........................... 66 - 11.1 Construction of OPTIONS Request ..................... 67 - 11.2 Processing of OPTIONS Request ....................... 68 - 12 Dialogs ............................................. 69 - 12.1 Creation of a Dialog ................................ 70 - 12.1.1 UAS behavior ........................................ 70 - 12.1.2 UAC Behavior ........................................ 71 - 12.2 Requests within a Dialog ............................ 72 - 12.2.1 UAC Behavior ........................................ 73 - 12.2.1.1 Generating the Request .............................. 73 - 12.2.1.2 Processing the Responses ............................ 75 - 12.2.2 UAS Behavior ........................................ 76 - 12.3 Termination of a Dialog ............................. 77 - 13 Initiating a Session ................................ 77 - 13.1 Overview ............................................ 77 - 13.2 UAC Processing ...................................... 78 - 13.2.1 Creating the Initial INVITE ......................... 78 - 13.2.2 Processing INVITE Responses ......................... 81 - 13.2.2.1 1xx Responses ....................................... 81 - 13.2.2.2 3xx Responses ....................................... 81 - 13.2.2.3 4xx, 5xx and 6xx Responses .......................... 81 - 13.2.2.4 2xx Responses ....................................... 82 - 13.3 UAS Processing ...................................... 83 - 13.3.1 Processing of the INVITE ............................ 83 - 13.3.1.1 Progress ............................................ 84 - 13.3.1.2 The INVITE is Redirected ............................ 84 - - - -Rosenberg, et. al. Standards Track [Page 3] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 13.3.1.3 The INVITE is Rejected .............................. 85 - 13.3.1.4 The INVITE is Accepted .............................. 85 - 14 Modifying an Existing Session ....................... 86 - 14.1 UAC Behavior ........................................ 86 - 14.2 UAS Behavior ........................................ 88 - 15 Terminating a Session ............................... 89 - 15.1 Terminating a Session with a BYE Request ............ 90 - 15.1.1 UAC Behavior ........................................ 90 - 15.1.2 UAS Behavior ........................................ 91 - 16 Proxy Behavior ...................................... 91 - 16.1 Overview ............................................ 91 - 16.2 Stateful Proxy ...................................... 92 - 16.3 Request Validation .................................. 94 - 16.4 Route Information Preprocessing ..................... 96 - 16.5 Determining Request Targets ......................... 97 - 16.6 Request Forwarding .................................. 99 - 16.7 Response Processing ................................. 107 - 16.8 Processing Timer C .................................. 114 - 16.9 Handling Transport Errors ........................... 115 - 16.10 CANCEL Processing ................................... 115 - 16.11 Stateless Proxy ..................................... 116 - 16.12 Summary of Proxy Route Processing ................... 118 - 16.12.1 Examples ............................................ 118 - 16.12.1.1 Basic SIP Trapezoid ................................. 118 - 16.12.1.2 Traversing a Strict-Routing Proxy ................... 120 - 16.12.1.3 Rewriting Record-Route Header Field Values .......... 121 - 17 Transactions ........................................ 122 - 17.1 Client Transaction .................................. 124 - 17.1.1 INVITE Client Transaction ........................... 125 - 17.1.1.1 Overview of INVITE Transaction ...................... 125 - 17.1.1.2 Formal Description .................................. 125 - 17.1.1.3 Construction of the ACK Request ..................... 129 - 17.1.2 Non-INVITE Client Transaction ....................... 130 - 17.1.2.1 Overview of the non-INVITE Transaction .............. 130 - 17.1.2.2 Formal Description .................................. 131 - 17.1.3 Matching Responses to Client Transactions ........... 132 - 17.1.4 Handling Transport Errors ........................... 133 - 17.2 Server Transaction .................................. 134 - 17.2.1 INVITE Server Transaction ........................... 134 - 17.2.2 Non-INVITE Server Transaction ....................... 137 - 17.2.3 Matching Requests to Server Transactions ............ 138 - 17.2.4 Handling Transport Errors ........................... 141 - 18 Transport ........................................... 141 - 18.1 Clients ............................................. 142 - 18.1.1 Sending Requests .................................... 142 - 18.1.2 Receiving Responses ................................. 144 - 18.2 Servers ............................................. 145 - 18.2.1 Receiving Requests .................................. 145 - - - -Rosenberg, et. al. Standards Track [Page 4] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 18.2.2 Sending Responses ................................... 146 - 18.3 Framing ............................................. 147 - 18.4 Error Handling ...................................... 147 - 19 Common Message Components ........................... 147 - 19.1 SIP and SIPS Uniform Resource Indicators ............ 148 - 19.1.1 SIP and SIPS URI Components ......................... 148 - 19.1.2 Character Escaping Requirements ..................... 152 - 19.1.3 Example SIP and SIPS URIs ........................... 153 - 19.1.4 URI Comparison ...................................... 153 - 19.1.5 Forming Requests from a URI ......................... 156 - 19.1.6 Relating SIP URIs and tel URLs ...................... 157 - 19.2 Option Tags ......................................... 158 - 19.3 Tags ................................................ 159 - 20 Header Fields ....................................... 159 - 20.1 Accept .............................................. 161 - 20.2 Accept-Encoding ..................................... 163 - 20.3 Accept-Language ..................................... 164 - 20.4 Alert-Info .......................................... 164 - 20.5 Allow ............................................... 165 - 20.6 Authentication-Info ................................. 165 - 20.7 Authorization ....................................... 165 - 20.8 Call-ID ............................................. 166 - 20.9 Call-Info ........................................... 166 - 20.10 Contact ............................................. 167 - 20.11 Content-Disposition ................................. 168 - 20.12 Content-Encoding .................................... 169 - 20.13 Content-Language .................................... 169 - 20.14 Content-Length ...................................... 169 - 20.15 Content-Type ........................................ 170 - 20.16 CSeq ................................................ 170 - 20.17 Date ................................................ 170 - 20.18 Error-Info .......................................... 171 - 20.19 Expires ............................................. 171 - 20.20 From ................................................ 172 - 20.21 In-Reply-To ......................................... 172 - 20.22 Max-Forwards ........................................ 173 - 20.23 Min-Expires ......................................... 173 - 20.24 MIME-Version ........................................ 173 - 20.25 Organization ........................................ 174 - 20.26 Priority ............................................ 174 - 20.27 Proxy-Authenticate .................................. 174 - 20.28 Proxy-Authorization ................................. 175 - 20.29 Proxy-Require ....................................... 175 - 20.30 Record-Route ........................................ 175 - 20.31 Reply-To ............................................ 176 - 20.32 Require ............................................. 176 - 20.33 Retry-After ......................................... 176 - 20.34 Route ............................................... 177 - - - -Rosenberg, et. al. Standards Track [Page 5] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 20.35 Server .............................................. 177 - 20.36 Subject ............................................. 177 - 20.37 Supported ........................................... 178 - 20.38 Timestamp ........................................... 178 - 20.39 To .................................................. 178 - 20.40 Unsupported ......................................... 179 - 20.41 User-Agent .......................................... 179 - 20.42 Via ................................................. 179 - 20.43 Warning ............................................. 180 - 20.44 WWW-Authenticate .................................... 182 - 21 Response Codes ...................................... 182 - 21.1 Provisional 1xx ..................................... 182 - 21.1.1 100 Trying .......................................... 183 - 21.1.2 180 Ringing ......................................... 183 - 21.1.3 181 Call Is Being Forwarded ......................... 183 - 21.1.4 182 Queued .......................................... 183 - 21.1.5 183 Session Progress ................................ 183 - 21.2 Successful 2xx ...................................... 183 - 21.2.1 200 OK .............................................. 183 - 21.3 Redirection 3xx ..................................... 184 - 21.3.1 300 Multiple Choices ................................ 184 - 21.3.2 301 Moved Permanently ............................... 184 - 21.3.3 302 Moved Temporarily ............................... 184 - 21.3.4 305 Use Proxy ....................................... 185 - 21.3.5 380 Alternative Service ............................. 185 - 21.4 Request Failure 4xx ................................. 185 - 21.4.1 400 Bad Request ..................................... 185 - 21.4.2 401 Unauthorized .................................... 185 - 21.4.3 402 Payment Required ................................ 186 - 21.4.4 403 Forbidden ....................................... 186 - 21.4.5 404 Not Found ....................................... 186 - 21.4.6 405 Method Not Allowed .............................. 186 - 21.4.7 406 Not Acceptable .................................. 186 - 21.4.8 407 Proxy Authentication Required ................... 186 - 21.4.9 408 Request Timeout ................................. 186 - 21.4.10 410 Gone ............................................ 187 - 21.4.11 413 Request Entity Too Large ........................ 187 - 21.4.12 414 Request-URI Too Long ............................ 187 - 21.4.13 415 Unsupported Media Type .......................... 187 - 21.4.14 416 Unsupported URI Scheme .......................... 187 - 21.4.15 420 Bad Extension ................................... 187 - 21.4.16 421 Extension Required .............................. 188 - 21.4.17 423 Interval Too Brief .............................. 188 - 21.4.18 480 Temporarily Unavailable ......................... 188 - 21.4.19 481 Call/Transaction Does Not Exist ................. 188 - 21.4.20 482 Loop Detected ................................... 188 - 21.4.21 483 Too Many Hops ................................... 189 - 21.4.22 484 Address Incomplete .............................. 189 - - - -Rosenberg, et. al. Standards Track [Page 6] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 21.4.23 485 Ambiguous ....................................... 189 - 21.4.24 486 Busy Here ....................................... 189 - 21.4.25 487 Request Terminated .............................. 190 - 21.4.26 488 Not Acceptable Here ............................. 190 - 21.4.27 491 Request Pending ................................. 190 - 21.4.28 493 Undecipherable .................................. 190 - 21.5 Server Failure 5xx .................................. 190 - 21.5.1 500 Server Internal Error ........................... 190 - 21.5.2 501 Not Implemented ................................. 191 - 21.5.3 502 Bad Gateway ..................................... 191 - 21.5.4 503 Service Unavailable ............................. 191 - 21.5.5 504 Server Time-out ................................. 191 - 21.5.6 505 Version Not Supported ........................... 192 - 21.5.7 513 Message Too Large ............................... 192 - 21.6 Global Failures 6xx ................................. 192 - 21.6.1 600 Busy Everywhere ................................. 192 - 21.6.2 603 Decline ......................................... 192 - 21.6.3 604 Does Not Exist Anywhere ......................... 192 - 21.6.4 606 Not Acceptable .................................. 192 - 22 Usage of HTTP Authentication ........................ 193 - 22.1 Framework ........................................... 193 - 22.2 User-to-User Authentication ......................... 195 - 22.3 Proxy-to-User Authentication ........................ 197 - 22.4 The Digest Authentication Scheme .................... 199 - 23 S/MIME .............................................. 201 - 23.1 S/MIME Certificates ................................. 201 - 23.2 S/MIME Key Exchange ................................. 202 - 23.3 Securing MIME bodies ................................ 205 - 23.4 SIP Header Privacy and Integrity using S/MIME: - Tunneling SIP ....................................... 207 - 23.4.1 Integrity and Confidentiality Properties of SIP - Headers ............................................. 207 - 23.4.1.1 Integrity ........................................... 207 - 23.4.1.2 Confidentiality ..................................... 208 - 23.4.2 Tunneling Integrity and Authentication .............. 209 - 23.4.3 Tunneling Encryption ................................ 211 - 24 Examples ............................................ 213 - 24.1 Registration ........................................ 213 - 24.2 Session Setup ....................................... 214 - 25 Augmented BNF for the SIP Protocol .................. 219 - 25.1 Basic Rules ......................................... 219 - 26 Security Considerations: Threat Model and Security - Usage Recommendations ............................... 232 - 26.1 Attacks and Threat Models ........................... 233 - 26.1.1 Registration Hijacking .............................. 233 - 26.1.2 Impersonating a Server .............................. 234 - 26.1.3 Tampering with Message Bodies ....................... 235 - 26.1.4 Tearing Down Sessions ............................... 235 - - - -Rosenberg, et. al. Standards Track [Page 7] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 26.1.5 Denial of Service and Amplification ................. 236 - 26.2 Security Mechanisms ................................. 237 - 26.2.1 Transport and Network Layer Security ................ 238 - 26.2.2 SIPS URI Scheme ..................................... 239 - 26.2.3 HTTP Authentication ................................. 240 - 26.2.4 S/MIME .............................................. 240 - 26.3 Implementing Security Mechanisms .................... 241 - 26.3.1 Requirements for Implementers of SIP ................ 241 - 26.3.2 Security Solutions .................................. 242 - 26.3.2.1 Registration ........................................ 242 - 26.3.2.2 Interdomain Requests ................................ 243 - 26.3.2.3 Peer-to-Peer Requests ............................... 245 - 26.3.2.4 DoS Protection ...................................... 246 - 26.4 Limitations ......................................... 247 - 26.4.1 HTTP Digest ......................................... 247 - 26.4.2 S/MIME .............................................. 248 - 26.4.3 TLS ................................................. 249 - 26.4.4 SIPS URIs ........................................... 249 - 26.5 Privacy ............................................. 251 - 27 IANA Considerations ................................. 252 - 27.1 Option Tags ......................................... 252 - 27.2 Warn-Codes .......................................... 252 - 27.3 Header Field Names .................................. 253 - 27.4 Method and Response Codes ........................... 253 - 27.5 The "message/sip" MIME type. ....................... 254 - 27.6 New Content-Disposition Parameter Registrations ..... 255 - 28 Changes From RFC 2543 ............................... 255 - 28.1 Major Functional Changes ............................ 255 - 28.2 Minor Functional Changes ............................ 260 - 29 Normative References ................................ 261 - 30 Informative References .............................. 262 - A Table of Timer Values ............................... 265 - Acknowledgments ................................................ 266 - Authors' Addresses ............................................. 267 - Full Copyright Statement ....................................... 269 - -1 Introduction - - There are many applications of the Internet that require the creation - and management of a session, where a session is considered an - exchange of data between an association of participants. The - implementation of these applications is complicated by the practices - of participants: users may move between endpoints, they may be - addressable by multiple names, and they may communicate in several - different media - sometimes simultaneously. Numerous protocols have - been authored that carry various forms of real-time multimedia - session data such as voice, video, or text messages. The Session - Initiation Protocol (SIP) works in concert with these protocols by - - - -Rosenberg, et. al. Standards Track [Page 8] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - enabling Internet endpoints (called user agents) to discover one - another and to agree on a characterization of a session they would - like to share. For locating prospective session participants, and - for other functions, SIP enables the creation of an infrastructure of - network hosts (called proxy servers) to which user agents can send - registrations, invitations to sessions, and other requests. SIP is - an agile, general-purpose tool for creating, modifying, and - terminating sessions that works independently of underlying transport - protocols and without dependency on the type of session that is being - established. - -2 Overview of SIP Functionality - - SIP is an application-layer control protocol that can establish, - modify, and terminate multimedia sessions (conferences) such as - Internet telephony calls. SIP can also invite participants to - already existing sessions, such as multicast conferences. Media can - be added to (and removed from) an existing session. SIP - transparently supports name mapping and redirection services, which - supports personal mobility [27] - users can maintain a single - externally visible identifier regardless of their network location. - - SIP supports five facets of establishing and terminating multimedia - communications: - - User location: determination of the end system to be used for - communication; - - User availability: determination of the willingness of the called - party to engage in communications; - - User capabilities: determination of the media and media parameters - to be used; - - Session setup: "ringing", establishment of session parameters at - both called and calling party; - - Session management: including transfer and termination of - sessions, modifying session parameters, and invoking - services. - - SIP is not a vertically integrated communications system. SIP is - rather a component that can be used with other IETF protocols to - build a complete multimedia architecture. Typically, these - architectures will include protocols such as the Real-time Transport - Protocol (RTP) (RFC 1889 [28]) for transporting real-time data and - providing QoS feedback, the Real-Time streaming protocol (RTSP) (RFC - 2326 [29]) for controlling delivery of streaming media, the Media - - - -Rosenberg, et. al. Standards Track [Page 9] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Gateway Control Protocol (MEGACO) (RFC 3015 [30]) for controlling - gateways to the Public Switched Telephone Network (PSTN), and the - Session Description Protocol (SDP) (RFC 2327 [1]) for describing - multimedia sessions. Therefore, SIP should be used in conjunction - with other protocols in order to provide complete services to the - users. However, the basic functionality and operation of SIP does - not depend on any of these protocols. - - SIP does not provide services. Rather, SIP provides primitives that - can be used to implement different services. For example, SIP can - locate a user and deliver an opaque object to his current location. - If this primitive is used to deliver a session description written in - SDP, for instance, the endpoints can agree on the parameters of a - session. If the same primitive is used to deliver a photo of the - caller as well as the session description, a "caller ID" service can - be easily implemented. As this example shows, a single primitive is - typically used to provide several different services. - - SIP does not offer conference control services such as floor control - or voting and does not prescribe how a conference is to be managed. - SIP can be used to initiate a session that uses some other conference - control protocol. Since SIP messages and the sessions they establish - can pass through entirely different networks, SIP cannot, and does - not, provide any kind of network resource reservation capabilities. - - The nature of the services provided make security particularly - important. To that end, SIP provides a suite of security services, - which include denial-of-service prevention, authentication (both user - to user and proxy to user), integrity protection, and encryption and - privacy services. - - SIP works with both IPv4 and IPv6. - -3 Terminology - - In this document, the key words "MUST", "MUST NOT", "REQUIRED", - "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT - RECOMMENDED", "MAY", and "OPTIONAL" are to be interpreted as - described in BCP 14, RFC 2119 [2] and indicate requirement levels for - compliant SIP implementations. - -4 Overview of Operation - - This section introduces the basic operations of SIP using simple - examples. This section is tutorial in nature and does not contain - any normative statements. - - - - - -Rosenberg, et. al. Standards Track [Page 10] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The first example shows the basic functions of SIP: location of an - end point, signal of a desire to communicate, negotiation of session - parameters to establish the session, and teardown of the session once - established. - - Figure 1 shows a typical example of a SIP message exchange between - two users, Alice and Bob. (Each message is labeled with the letter - "F" and a number for reference by the text.) In this example, Alice - uses a SIP application on her PC (referred to as a softphone) to call - Bob on his SIP phone over the Internet. Also shown are two SIP proxy - servers that act on behalf of Alice and Bob to facilitate the session - establishment. This typical arrangement is often referred to as the - "SIP trapezoid" as shown by the geometric shape of the dotted lines - in Figure 1. - - Alice "calls" Bob using his SIP identity, a type of Uniform Resource - Identifier (URI) called a SIP URI. SIP URIs are defined in Section - 19.1. It has a similar form to an email address, typically - containing a username and a host name. In this case, it is - sip:bob@biloxi.com, where biloxi.com is the domain of Bob's SIP - service provider. Alice has a SIP URI of sip:alice@atlanta.com. - Alice might have typed in Bob's URI or perhaps clicked on a hyperlink - or an entry in an address book. SIP also provides a secure URI, - called a SIPS URI. An example would be sips:bob@biloxi.com. A call - made to a SIPS URI guarantees that secure, encrypted transport - (namely TLS) is used to carry all SIP messages from the caller to the - domain of the callee. From there, the request is sent securely to - the callee, but with security mechanisms that depend on the policy of - the domain of the callee. - - SIP is based on an HTTP-like request/response transaction model. - Each transaction consists of a request that invokes a particular - method, or function, on the server and at least one response. In - this example, the transaction begins with Alice's softphone sending - an INVITE request addressed to Bob's SIP URI. INVITE is an example - of a SIP method that specifies the action that the requestor (Alice) - wants the server (Bob) to take. The INVITE request contains a number - of header fields. Header fields are named attributes that provide - additional information about a message. The ones present in an - INVITE include a unique identifier for the call, the destination - address, Alice's address, and information about the type of session - that Alice wishes to establish with Bob. The INVITE (message F1 in - Figure 1) might look like this: - - - - - - - - -Rosenberg, et. al. Standards Track [Page 11] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - atlanta.com . . . biloxi.com - . proxy proxy . - . . - Alice's . . . . . . . . . . . . . . . . . . . . Bob's - softphone SIP Phone - | | | | - | INVITE F1 | | | - |--------------->| INVITE F2 | | - | 100 Trying F3 |--------------->| INVITE F4 | - |<---------------| 100 Trying F5 |--------------->| - | |<-------------- | 180 Ringing F6 | - | | 180 Ringing F7 |<---------------| - | 180 Ringing F8 |<---------------| 200 OK F9 | - |<---------------| 200 OK F10 |<---------------| - | 200 OK F11 |<---------------| | - |<---------------| | | - | ACK F12 | - |------------------------------------------------->| - | Media Session | - |<================================================>| - | BYE F13 | - |<-------------------------------------------------| - | 200 OK F14 | - |------------------------------------------------->| - | | - - Figure 1: SIP session setup example with SIP trapezoid - - INVITE sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bK776asdhds - Max-Forwards: 70 - To: Bob - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710@pc33.atlanta.com - CSeq: 314159 INVITE - Contact: - Content-Type: application/sdp - Content-Length: 142 - - (Alice's SDP not shown) - - The first line of the text-encoded message contains the method name - (INVITE). The lines that follow are a list of header fields. This - example contains a minimum required set. The header fields are - briefly described below: - - - - - - -Rosenberg, et. al. Standards Track [Page 12] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Via contains the address (pc33.atlanta.com) at which Alice is - expecting to receive responses to this request. It also contains a - branch parameter that identifies this transaction. - - To contains a display name (Bob) and a SIP or SIPS URI - (sip:bob@biloxi.com) towards which the request was originally - directed. Display names are described in RFC 2822 [3]. - - From also contains a display name (Alice) and a SIP or SIPS URI - (sip:alice@atlanta.com) that indicate the originator of the request. - This header field also has a tag parameter containing a random string - (1928301774) that was added to the URI by the softphone. It is used - for identification purposes. - - Call-ID contains a globally unique identifier for this call, - generated by the combination of a random string and the softphone's - host name or IP address. The combination of the To tag, From tag, - and Call-ID completely defines a peer-to-peer SIP relationship - between Alice and Bob and is referred to as a dialog. - - CSeq or Command Sequence contains an integer and a method name. The - CSeq number is incremented for each new request within a dialog and - is a traditional sequence number. - - Contact contains a SIP or SIPS URI that represents a direct route to - contact Alice, usually composed of a username at a fully qualified - domain name (FQDN). While an FQDN is preferred, many end systems do - not have registered domain names, so IP addresses are permitted. - While the Via header field tells other elements where to send the - response, the Contact header field tells other elements where to send - future requests. - - Max-Forwards serves to limit the number of hops a request can make on - the way to its destination. It consists of an integer that is - decremented by one at each hop. - - Content-Type contains a description of the message body (not shown). - - Content-Length contains an octet (byte) count of the message body. - - The complete set of SIP header fields is defined in Section 20. - - The details of the session, such as the type of media, codec, or - sampling rate, are not described using SIP. Rather, the body of a - SIP message contains a description of the session, encoded in some - other protocol format. One such format is the Session Description - Protocol (SDP) (RFC 2327 [1]). This SDP message (not shown in the - - - - -Rosenberg, et. al. Standards Track [Page 13] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - example) is carried by the SIP message in a way that is analogous to - a document attachment being carried by an email message, or a web - page being carried in an HTTP message. - - Since the softphone does not know the location of Bob or the SIP - server in the biloxi.com domain, the softphone sends the INVITE to - the SIP server that serves Alice's domain, atlanta.com. The address - of the atlanta.com SIP server could have been configured in Alice's - softphone, or it could have been discovered by DHCP, for example. - - The atlanta.com SIP server is a type of SIP server known as a proxy - server. A proxy server receives SIP requests and forwards them on - behalf of the requestor. In this example, the proxy server receives - the INVITE request and sends a 100 (Trying) response back to Alice's - softphone. The 100 (Trying) response indicates that the INVITE has - been received and that the proxy is working on her behalf to route - the INVITE to the destination. Responses in SIP use a three-digit - code followed by a descriptive phrase. This response contains the - same To, From, Call-ID, CSeq and branch parameter in the Via as the - INVITE, which allows Alice's softphone to correlate this response to - the sent INVITE. The atlanta.com proxy server locates the proxy - server at biloxi.com, possibly by performing a particular type of DNS - (Domain Name Service) lookup to find the SIP server that serves the - biloxi.com domain. This is described in [4]. As a result, it - obtains the IP address of the biloxi.com proxy server and forwards, - or proxies, the INVITE request there. Before forwarding the request, - the atlanta.com proxy server adds an additional Via header field - value that contains its own address (the INVITE already contains - Alice's address in the first Via). The biloxi.com proxy server - receives the INVITE and responds with a 100 (Trying) response back to - the atlanta.com proxy server to indicate that it has received the - INVITE and is processing the request. The proxy server consults a - database, generically called a location service, that contains the - current IP address of Bob. (We shall see in the next section how - this database can be populated.) The biloxi.com proxy server adds - another Via header field value with its own address to the INVITE and - proxies it to Bob's SIP phone. - - Bob's SIP phone receives the INVITE and alerts Bob to the incoming - call from Alice so that Bob can decide whether to answer the call, - that is, Bob's phone rings. Bob's SIP phone indicates this in a 180 - (Ringing) response, which is routed back through the two proxies in - the reverse direction. Each proxy uses the Via header field to - determine where to send the response and removes its own address from - the top. As a result, although DNS and location service lookups were - required to route the initial INVITE, the 180 (Ringing) response can - be returned to the caller without lookups or without state being - - - - -Rosenberg, et. al. Standards Track [Page 14] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - maintained in the proxies. This also has the desirable property that - each proxy that sees the INVITE will also see all responses to the - INVITE. - - When Alice's softphone receives the 180 (Ringing) response, it passes - this information to Alice, perhaps using an audio ringback tone or by - displaying a message on Alice's screen. - - In this example, Bob decides to answer the call. When he picks up - the handset, his SIP phone sends a 200 (OK) response to indicate that - the call has been answered. The 200 (OK) contains a message body - with the SDP media description of the type of session that Bob is - willing to establish with Alice. As a result, there is a two-phase - exchange of SDP messages: Alice sent one to Bob, and Bob sent one - back to Alice. This two-phase exchange provides basic negotiation - capabilities and is based on a simple offer/answer model of SDP - exchange. If Bob did not wish to answer the call or was busy on - another call, an error response would have been sent instead of the - 200 (OK), which would have resulted in no media session being - established. The complete list of SIP response codes is in Section - 21. The 200 (OK) (message F9 in Figure 1) might look like this as - Bob sends it out: - - SIP/2.0 200 OK - Via: SIP/2.0/UDP server10.biloxi.com - ;branch=z9hG4bKnashds8;received=192.0.2.3 - Via: SIP/2.0/UDP bigbox3.site3.atlanta.com - ;branch=z9hG4bK77ef4c2312983.1;received=192.0.2.2 - Via: SIP/2.0/UDP pc33.atlanta.com - ;branch=z9hG4bK776asdhds ;received=192.0.2.1 - To: Bob ;tag=a6c85cf - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710@pc33.atlanta.com - CSeq: 314159 INVITE - Contact: - Content-Type: application/sdp - Content-Length: 131 - - (Bob's SDP not shown) - - The first line of the response contains the response code (200) and - the reason phrase (OK). The remaining lines contain header fields. - The Via, To, From, Call-ID, and CSeq header fields are copied from - the INVITE request. (There are three Via header field values - one - added by Alice's SIP phone, one added by the atlanta.com proxy, and - one added by the biloxi.com proxy.) Bob's SIP phone has added a tag - parameter to the To header field. This tag will be incorporated by - both endpoints into the dialog and will be included in all future - - - -Rosenberg, et. al. Standards Track [Page 15] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - requests and responses in this call. The Contact header field - contains a URI at which Bob can be directly reached at his SIP phone. - The Content-Type and Content-Length refer to the message body (not - shown) that contains Bob's SDP media information. - - In addition to DNS and location service lookups shown in this - example, proxy servers can make flexible "routing decisions" to - decide where to send a request. For example, if Bob's SIP phone - returned a 486 (Busy Here) response, the biloxi.com proxy server - could proxy the INVITE to Bob's voicemail server. A proxy server can - also send an INVITE to a number of locations at the same time. This - type of parallel search is known as forking. - - In this case, the 200 (OK) is routed back through the two proxies and - is received by Alice's softphone, which then stops the ringback tone - and indicates that the call has been answered. Finally, Alice's - softphone sends an acknowledgement message, ACK, to Bob's SIP phone - to confirm the reception of the final response (200 (OK)). In this - example, the ACK is sent directly from Alice's softphone to Bob's SIP - phone, bypassing the two proxies. This occurs because the endpoints - have learned each other's address from the Contact header fields - through the INVITE/200 (OK) exchange, which was not known when the - initial INVITE was sent. The lookups performed by the two proxies - are no longer needed, so the proxies drop out of the call flow. This - completes the INVITE/200/ACK three-way handshake used to establish - SIP sessions. Full details on session setup are in Section 13. - - Alice and Bob's media session has now begun, and they send media - packets using the format to which they agreed in the exchange of SDP. - In general, the end-to-end media packets take a different path from - the SIP signaling messages. - - During the session, either Alice or Bob may decide to change the - characteristics of the media session. This is accomplished by - sending a re-INVITE containing a new media description. This re- - INVITE references the existing dialog so that the other party knows - that it is to modify an existing session instead of establishing a - new session. The other party sends a 200 (OK) to accept the change. - The requestor responds to the 200 (OK) with an ACK. If the other - party does not accept the change, he sends an error response such as - 488 (Not Acceptable Here), which also receives an ACK. However, the - failure of the re-INVITE does not cause the existing call to fail - - the session continues using the previously negotiated - characteristics. Full details on session modification are in Section - 14. - - - - - - -Rosenberg, et. al. Standards Track [Page 16] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - At the end of the call, Bob disconnects (hangs up) first and - generates a BYE message. This BYE is routed directly to Alice's - softphone, again bypassing the proxies. Alice confirms receipt of - the BYE with a 200 (OK) response, which terminates the session and - the BYE transaction. No ACK is sent - an ACK is only sent in - response to a response to an INVITE request. The reasons for this - special handling for INVITE will be discussed later, but relate to - the reliability mechanisms in SIP, the length of time it can take for - a ringing phone to be answered, and forking. For this reason, - request handling in SIP is often classified as either INVITE or non- - INVITE, referring to all other methods besides INVITE. Full details - on session termination are in Section 15. - - Section 24.2 describes the messages shown in Figure 1 in full. - - In some cases, it may be useful for proxies in the SIP signaling path - to see all the messaging between the endpoints for the duration of - the session. For example, if the biloxi.com proxy server wished to - remain in the SIP messaging path beyond the initial INVITE, it would - add to the INVITE a required routing header field known as Record- - Route that contained a URI resolving to the hostname or IP address of - the proxy. This information would be received by both Bob's SIP - phone and (due to the Record-Route header field being passed back in - the 200 (OK)) Alice's softphone and stored for the duration of the - dialog. The biloxi.com proxy server would then receive and proxy the - ACK, BYE, and 200 (OK) to the BYE. Each proxy can independently - decide to receive subsequent messages, and those messages will pass - through all proxies that elect to receive it. This capability is - frequently used for proxies that are providing mid-call features. - - Registration is another common operation in SIP. Registration is one - way that the biloxi.com server can learn the current location of Bob. - Upon initialization, and at periodic intervals, Bob's SIP phone sends - REGISTER messages to a server in the biloxi.com domain known as a SIP - registrar. The REGISTER messages associate Bob's SIP or SIPS URI - (sip:bob@biloxi.com) with the machine into which he is currently - logged (conveyed as a SIP or SIPS URI in the Contact header field). - The registrar writes this association, also called a binding, to a - database, called the location service, where it can be used by the - proxy in the biloxi.com domain. Often, a registrar server for a - domain is co-located with the proxy for that domain. It is an - important concept that the distinction between types of SIP servers - is logical, not physical. - - Bob is not limited to registering from a single device. For example, - both his SIP phone at home and the one in the office could send - registrations. This information is stored together in the location - - - - -Rosenberg, et. al. Standards Track [Page 17] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - service and allows a proxy to perform various types of searches to - locate Bob. Similarly, more than one user can be registered on a - single device at the same time. - - The location service is just an abstract concept. It generally - contains information that allows a proxy to input a URI and receive a - set of zero or more URIs that tell the proxy where to send the - request. Registrations are one way to create this information, but - not the only way. Arbitrary mapping functions can be configured at - the discretion of the administrator. - - Finally, it is important to note that in SIP, registration is used - for routing incoming SIP requests and has no role in authorizing - outgoing requests. Authorization and authentication are handled in - SIP either on a request-by-request basis with a challenge/response - mechanism, or by using a lower layer scheme as discussed in Section - 26. - - The complete set of SIP message details for this registration example - is in Section 24.1. - - Additional operations in SIP, such as querying for the capabilities - of a SIP server or client using OPTIONS, or canceling a pending - request using CANCEL, will be introduced in later sections. - -5 Structure of the Protocol - - SIP is structured as a layered protocol, which means that its - behavior is described in terms of a set of fairly independent - processing stages with only a loose coupling between each stage. The - protocol behavior is described as layers for the purpose of - presentation, allowing the description of functions common across - elements in a single section. It does not dictate an implementation - in any way. When we say that an element "contains" a layer, we mean - it is compliant to the set of rules defined by that layer. - - Not every element specified by the protocol contains every layer. - Furthermore, the elements specified by SIP are logical elements, not - physical ones. A physical realization can choose to act as different - logical elements, perhaps even on a transaction-by-transaction basis. - - The lowest layer of SIP is its syntax and encoding. Its encoding is - specified using an augmented Backus-Naur Form grammar (BNF). The - complete BNF is specified in Section 25; an overview of a SIP - message's structure can be found in Section 7. - - - - - - -Rosenberg, et. al. Standards Track [Page 18] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The second layer is the transport layer. It defines how a client - sends requests and receives responses and how a server receives - requests and sends responses over the network. All SIP elements - contain a transport layer. The transport layer is described in - Section 18. - - The third layer is the transaction layer. Transactions are a - fundamental component of SIP. A transaction is a request sent by a - client transaction (using the transport layer) to a server - transaction, along with all responses to that request sent from the - server transaction back to the client. The transaction layer handles - application-layer retransmissions, matching of responses to requests, - and application-layer timeouts. Any task that a user agent client - (UAC) accomplishes takes place using a series of transactions. - Discussion of transactions can be found in Section 17. User agents - contain a transaction layer, as do stateful proxies. Stateless - proxies do not contain a transaction layer. The transaction layer - has a client component (referred to as a client transaction) and a - server component (referred to as a server transaction), each of which - are represented by a finite state machine that is constructed to - process a particular request. - - The layer above the transaction layer is called the transaction user - (TU). Each of the SIP entities, except the stateless proxy, is a - transaction user. When a TU wishes to send a request, it creates a - client transaction instance and passes it the request along with the - destination IP address, port, and transport to which to send the - request. A TU that creates a client transaction can also cancel it. - When a client cancels a transaction, it requests that the server stop - further processing, revert to the state that existed before the - transaction was initiated, and generate a specific error response to - that transaction. This is done with a CANCEL request, which - constitutes its own transaction, but references the transaction to be - cancelled (Section 9). - - The SIP elements, that is, user agent clients and servers, stateless - and stateful proxies and registrars, contain a core that - distinguishes them from each other. Cores, except for the stateless - proxy, are transaction users. While the behavior of the UAC and UAS - cores depends on the method, there are some common rules for all - methods (Section 8). For a UAC, these rules govern the construction - of a request; for a UAS, they govern the processing of a request and - generating a response. Since registrations play an important role in - SIP, a UAS that handles a REGISTER is given the special name - registrar. Section 10 describes UAC and UAS core behavior for the - REGISTER method. Section 11 describes UAC and UAS core behavior for - the OPTIONS method, used for determining the capabilities of a UA. - - - - -Rosenberg, et. al. Standards Track [Page 19] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Certain other requests are sent within a dialog. A dialog is a - peer-to-peer SIP relationship between two user agents that persists - for some time. The dialog facilitates sequencing of messages and - proper routing of requests between the user agents. The INVITE - method is the only way defined in this specification to establish a - dialog. When a UAC sends a request that is within the context of a - dialog, it follows the common UAC rules as discussed in Section 8 but - also the rules for mid-dialog requests. Section 12 discusses dialogs - and presents the procedures for their construction and maintenance, - in addition to construction of requests within a dialog. - - The most important method in SIP is the INVITE method, which is used - to establish a session between participants. A session is a - collection of participants, and streams of media between them, for - the purposes of communication. Section 13 discusses how sessions are - initiated, resulting in one or more SIP dialogs. Section 14 - discusses how characteristics of that session are modified through - the use of an INVITE request within a dialog. Finally, section 15 - discusses how a session is terminated. - - The procedures of Sections 8, 10, 11, 12, 13, 14, and 15 deal - entirely with the UA core (Section 9 describes cancellation, which - applies to both UA core and proxy core). Section 16 discusses the - proxy element, which facilitates routing of messages between user - agents. - -6 Definitions - - The following terms have special significance for SIP. - - Address-of-Record: An address-of-record (AOR) is a SIP or SIPS URI - that points to a domain with a location service that can map - the URI to another URI where the user might be available. - Typically, the location service is populated through - registrations. An AOR is frequently thought of as the "public - address" of the user. - - Back-to-Back User Agent: A back-to-back user agent (B2BUA) is a - logical entity that receives a request and processes it as a - user agent server (UAS). In order to determine how the request - should be answered, it acts as a user agent client (UAC) and - generates requests. Unlike a proxy server, it maintains dialog - state and must participate in all requests sent on the dialogs - it has established. Since it is a concatenation of a UAC and - UAS, no explicit definitions are needed for its behavior. - - - - - - -Rosenberg, et. al. Standards Track [Page 20] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Call: A call is an informal term that refers to some communication - between peers, generally set up for the purposes of a - multimedia conversation. - - Call Leg: Another name for a dialog [31]; no longer used in this - specification. - - Call Stateful: A proxy is call stateful if it retains state for a - dialog from the initiating INVITE to the terminating BYE - request. A call stateful proxy is always transaction stateful, - but the converse is not necessarily true. - - Client: A client is any network element that sends SIP requests - and receives SIP responses. Clients may or may not interact - directly with a human user. User agent clients and proxies are - clients. - - Conference: A multimedia session (see below) that contains - multiple participants. - - Core: Core designates the functions specific to a particular type - of SIP entity, i.e., specific to either a stateful or stateless - proxy, a user agent or registrar. All cores, except those for - the stateless proxy, are transaction users. - - Dialog: A dialog is a peer-to-peer SIP relationship between two - UAs that persists for some time. A dialog is established by - SIP messages, such as a 2xx response to an INVITE request. A - dialog is identified by a call identifier, local tag, and a - remote tag. A dialog was formerly known as a call leg in RFC - 2543. - - Downstream: A direction of message forwarding within a transaction - that refers to the direction that requests flow from the user - agent client to user agent server. - - Final Response: A response that terminates a SIP transaction, as - opposed to a provisional response that does not. All 2xx, 3xx, - 4xx, 5xx and 6xx responses are final. - - Header: A header is a component of a SIP message that conveys - information about the message. It is structured as a sequence - of header fields. - - Header Field: A header field is a component of the SIP message - header. A header field can appear as one or more header field - rows. Header field rows consist of a header field name and zero - or more header field values. Multiple header field values on a - - - -Rosenberg, et. al. Standards Track [Page 21] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - given header field row are separated by commas. Some header - fields can only have a single header field value, and as a - result, always appear as a single header field row. - - Header Field Value: A header field value is a single value; a - header field consists of zero or more header field values. - - Home Domain: The domain providing service to a SIP user. - Typically, this is the domain present in the URI in the - address-of-record of a registration. - - Informational Response: Same as a provisional response. - - Initiator, Calling Party, Caller: The party initiating a session - (and dialog) with an INVITE request. A caller retains this - role from the time it sends the initial INVITE that established - a dialog until the termination of that dialog. - - Invitation: An INVITE request. - - Invitee, Invited User, Called Party, Callee: The party that - receives an INVITE request for the purpose of establishing a - new session. A callee retains this role from the time it - receives the INVITE until the termination of the dialog - established by that INVITE. - - Location Service: A location service is used by a SIP redirect or - proxy server to obtain information about a callee's possible - location(s). It contains a list of bindings of address-of- - record keys to zero or more contact addresses. The bindings - can be created and removed in many ways; this specification - defines a REGISTER method that updates the bindings. - - Loop: A request that arrives at a proxy, is forwarded, and later - arrives back at the same proxy. When it arrives the second - time, its Request-URI is identical to the first time, and other - header fields that affect proxy operation are unchanged, so - that the proxy would make the same processing decision on the - request it made the first time. Looped requests are errors, - and the procedures for detecting them and handling them are - described by the protocol. - - Loose Routing: A proxy is said to be loose routing if it follows - the procedures defined in this specification for processing of - the Route header field. These procedures separate the - destination of the request (present in the Request-URI) from - - - - - -Rosenberg, et. al. Standards Track [Page 22] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - the set of proxies that need to be visited along the way - (present in the Route header field). A proxy compliant to - these mechanisms is also known as a loose router. - - Message: Data sent between SIP elements as part of the protocol. - SIP messages are either requests or responses. - - Method: The method is the primary function that a request is meant - to invoke on a server. The method is carried in the request - message itself. Example methods are INVITE and BYE. - - Outbound Proxy: A proxy that receives requests from a client, even - though it may not be the server resolved by the Request-URI. - Typically, a UA is manually configured with an outbound proxy, - or can learn about one through auto-configuration protocols. - - Parallel Search: In a parallel search, a proxy issues several - requests to possible user locations upon receiving an incoming - request. Rather than issuing one request and then waiting for - the final response before issuing the next request as in a - sequential search, a parallel search issues requests without - waiting for the result of previous requests. - - Provisional Response: A response used by the server to indicate - progress, but that does not terminate a SIP transaction. 1xx - responses are provisional, other responses are considered - final. - - Proxy, Proxy Server: An intermediary entity that acts as both a - server and a client for the purpose of making requests on - behalf of other clients. A proxy server primarily plays the - role of routing, which means its job is to ensure that a - request is sent to another entity "closer" to the targeted - user. Proxies are also useful for enforcing policy (for - example, making sure a user is allowed to make a call). A - proxy interprets, and, if necessary, rewrites specific parts of - a request message before forwarding it. - - Recursion: A client recurses on a 3xx response when it generates a - new request to one or more of the URIs in the Contact header - field in the response. - - Redirect Server: A redirect server is a user agent server that - generates 3xx responses to requests it receives, directing the - client to contact an alternate set of URIs. - - - - - - -Rosenberg, et. al. Standards Track [Page 23] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Registrar: A registrar is a server that accepts REGISTER requests - and places the information it receives in those requests into - the location service for the domain it handles. - - Regular Transaction: A regular transaction is any transaction with - a method other than INVITE, ACK, or CANCEL. - - Request: A SIP message sent from a client to a server, for the - purpose of invoking a particular operation. - - Response: A SIP message sent from a server to a client, for - indicating the status of a request sent from the client to the - server. - - Ringback: Ringback is the signaling tone produced by the calling - party's application indicating that a called party is being - alerted (ringing). - - Route Set: A route set is a collection of ordered SIP or SIPS URI - which represent a list of proxies that must be traversed when - sending a particular request. A route set can be learned, - through headers like Record-Route, or it can be configured. - - Server: A server is a network element that receives requests in - order to service them and sends back responses to those - requests. Examples of servers are proxies, user agent servers, - redirect servers, and registrars. - - Sequential Search: In a sequential search, a proxy server attempts - each contact address in sequence, proceeding to the next one - only after the previous has generated a final response. A 2xx - or 6xx class final response always terminates a sequential - search. - - Session: From the SDP specification: "A multimedia session is a - set of multimedia senders and receivers and the data streams - flowing from senders to receivers. A multimedia conference is - an example of a multimedia session." (RFC 2327 [1]) (A session - as defined for SDP can comprise one or more RTP sessions.) As - defined, a callee can be invited several times, by different - calls, to the same session. If SDP is used, a session is - defined by the concatenation of the SDP user name, session id, - network type, address type, and address elements in the origin - field. - - SIP Transaction: A SIP transaction occurs between a client and a - server and comprises all messages from the first request sent - from the client to the server up to a final (non-1xx) response - - - -Rosenberg, et. al. Standards Track [Page 24] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - sent from the server to the client. If the request is INVITE - and the final response is a non-2xx, the transaction also - includes an ACK to the response. The ACK for a 2xx response to - an INVITE request is a separate transaction. - - Spiral: A spiral is a SIP request that is routed to a proxy, - forwarded onwards, and arrives once again at that proxy, but - this time differs in a way that will result in a different - processing decision than the original request. Typically, this - means that the request's Request-URI differs from its previous - arrival. A spiral is not an error condition, unlike a loop. A - typical cause for this is call forwarding. A user calls - joe@example.com. The example.com proxy forwards it to Joe's - PC, which in turn, forwards it to bob@example.com. This - request is proxied back to the example.com proxy. However, - this is not a loop. Since the request is targeted at a - different user, it is considered a spiral, and is a valid - condition. - - Stateful Proxy: A logical entity that maintains the client and - server transaction state machines defined by this specification - during the processing of a request, also known as a transaction - stateful proxy. The behavior of a stateful proxy is further - defined in Section 16. A (transaction) stateful proxy is not - the same as a call stateful proxy. - - Stateless Proxy: A logical entity that does not maintain the - client or server transaction state machines defined in this - specification when it processes requests. A stateless proxy - forwards every request it receives downstream and every - response it receives upstream. - - Strict Routing: A proxy is said to be strict routing if it follows - the Route processing rules of RFC 2543 and many prior work in - progress versions of this RFC. That rule caused proxies to - destroy the contents of the Request-URI when a Route header - field was present. Strict routing behavior is not used in this - specification, in favor of a loose routing behavior. Proxies - that perform strict routing are also known as strict routers. - - Target Refresh Request: A target refresh request sent within a - dialog is defined as a request that can modify the remote - target of the dialog. - - Transaction User (TU): The layer of protocol processing that - resides above the transaction layer. Transaction users include - the UAC core, UAS core, and proxy core. - - - - -Rosenberg, et. al. Standards Track [Page 25] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Upstream: A direction of message forwarding within a transaction - that refers to the direction that responses flow from the user - agent server back to the user agent client. - - URL-encoded: A character string encoded according to RFC 2396, - Section 2.4 [5]. - - User Agent Client (UAC): A user agent client is a logical entity - that creates a new request, and then uses the client - transaction state machinery to send it. The role of UAC lasts - only for the duration of that transaction. In other words, if - a piece of software initiates a request, it acts as a UAC for - the duration of that transaction. If it receives a request - later, it assumes the role of a user agent server for the - processing of that transaction. - - UAC Core: The set of processing functions required of a UAC that - reside above the transaction and transport layers. - - User Agent Server (UAS): A user agent server is a logical entity - that generates a response to a SIP request. The response - accepts, rejects, or redirects the request. This role lasts - only for the duration of that transaction. In other words, if - a piece of software responds to a request, it acts as a UAS for - the duration of that transaction. If it generates a request - later, it assumes the role of a user agent client for the - processing of that transaction. - - UAS Core: The set of processing functions required at a UAS that - resides above the transaction and transport layers. - - User Agent (UA): A logical entity that can act as both a user - agent client and user agent server. - - The role of UAC and UAS, as well as proxy and redirect servers, are - defined on a transaction-by-transaction basis. For example, the user - agent initiating a call acts as a UAC when sending the initial INVITE - request and as a UAS when receiving a BYE request from the callee. - Similarly, the same software can act as a proxy server for one - request and as a redirect server for the next request. - - Proxy, location, and registrar servers defined above are logical - entities; implementations MAY combine them into a single application. - -7 SIP Messages - - SIP is a text-based protocol and uses the UTF-8 charset (RFC 2279 - [7]). - - - -Rosenberg, et. al. Standards Track [Page 26] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - A SIP message is either a request from a client to a server, or a - response from a server to a client. - - Both Request (section 7.1) and Response (section 7.2) messages use - the basic format of RFC 2822 [3], even though the syntax differs in - character set and syntax specifics. (SIP allows header fields that - would not be valid RFC 2822 header fields, for example.) Both types - of messages consist of a start-line, one or more header fields, an - empty line indicating the end of the header fields, and an optional - message-body. - - generic-message = start-line - *message-header - CRLF - [ message-body ] - start-line = Request-Line / Status-Line - - The start-line, each message-header line, and the empty line MUST be - terminated by a carriage-return line-feed sequence (CRLF). Note that - the empty line MUST be present even if the message-body is not. - - Except for the above difference in character sets, much of SIP's - message and header field syntax is identical to HTTP/1.1. Rather - than repeating the syntax and semantics here, we use [HX.Y] to refer - to Section X.Y of the current HTTP/1.1 specification (RFC 2616 [8]). - - However, SIP is not an extension of HTTP. - -7.1 Requests - - SIP requests are distinguished by having a Request-Line for a start- - line. A Request-Line contains a method name, a Request-URI, and the - protocol version separated by a single space (SP) character. - - The Request-Line ends with CRLF. No CR or LF are allowed except in - the end-of-line CRLF sequence. No linear whitespace (LWS) is allowed - in any of the elements. - - Request-Line = Method SP Request-URI SP SIP-Version CRLF - - Method: This specification defines six methods: REGISTER for - registering contact information, INVITE, ACK, and CANCEL for - setting up sessions, BYE for terminating sessions, and - OPTIONS for querying servers about their capabilities. SIP - extensions, documented in standards track RFCs, may define - additional methods. - - - - - -Rosenberg, et. al. Standards Track [Page 27] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Request-URI: The Request-URI is a SIP or SIPS URI as described in - Section 19.1 or a general URI (RFC 2396 [5]). It indicates - the user or service to which this request is being addressed. - The Request-URI MUST NOT contain unescaped spaces or control - characters and MUST NOT be enclosed in "<>". - - SIP elements MAY support Request-URIs with schemes other than - "sip" and "sips", for example the "tel" URI scheme of RFC - 2806 [9]. SIP elements MAY translate non-SIP URIs using any - mechanism at their disposal, resulting in SIP URI, SIPS URI, - or some other scheme. - - SIP-Version: Both request and response messages include the - version of SIP in use, and follow [H3.1] (with HTTP replaced - by SIP, and HTTP/1.1 replaced by SIP/2.0) regarding version - ordering, compliance requirements, and upgrading of version - numbers. To be compliant with this specification, - applications sending SIP messages MUST include a SIP-Version - of "SIP/2.0". The SIP-Version string is case-insensitive, - but implementations MUST send upper-case. - - Unlike HTTP/1.1, SIP treats the version number as a literal - string. In practice, this should make no difference. - -7.2 Responses - - SIP responses are distinguished from requests by having a Status-Line - as their start-line. A Status-Line consists of the protocol version - followed by a numeric Status-Code and its associated textual phrase, - with each element separated by a single SP character. - - No CR or LF is allowed except in the final CRLF sequence. - - Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF - - The Status-Code is a 3-digit integer result code that indicates the - outcome of an attempt to understand and satisfy a request. The - Reason-Phrase is intended to give a short textual description of the - Status-Code. The Status-Code is intended for use by automata, - whereas the Reason-Phrase is intended for the human user. A client - is not required to examine or display the Reason-Phrase. - - While this specification suggests specific wording for the reason - phrase, implementations MAY choose other text, for example, in the - language indicated in the Accept-Language header field of the - request. - - - - - -Rosenberg, et. al. Standards Track [Page 28] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The first digit of the Status-Code defines the class of response. - The last two digits do not have any categorization role. For this - reason, any response with a status code between 100 and 199 is - referred to as a "1xx response", any response with a status code - between 200 and 299 as a "2xx response", and so on. SIP/2.0 allows - six values for the first digit: - - 1xx: Provisional -- request received, continuing to process the - request; - - 2xx: Success -- the action was successfully received, understood, - and accepted; - - 3xx: Redirection -- further action needs to be taken in order to - complete the request; - - 4xx: Client Error -- the request contains bad syntax or cannot be - fulfilled at this server; - - 5xx: Server Error -- the server failed to fulfill an apparently - valid request; - - 6xx: Global Failure -- the request cannot be fulfilled at any - server. - - Section 21 defines these classes and describes the individual codes. - -7.3 Header Fields - - SIP header fields are similar to HTTP header fields in both syntax - and semantics. In particular, SIP header fields follow the [H4.2] - definitions of syntax for the message-header and the rules for - extending header fields over multiple lines. However, the latter is - specified in HTTP with implicit whitespace and folding. This - specification conforms to RFC 2234 [10] and uses only explicit - whitespace and folding as an integral part of the grammar. - - [H4.2] also specifies that multiple header fields of the same field - name whose value is a comma-separated list can be combined into one - header field. That applies to SIP as well, but the specific rule is - different because of the different grammars. Specifically, any SIP - header whose grammar is of the form - - header = "header-name" HCOLON header-value *(COMMA header-value) - - allows for combining header fields of the same name into a comma- - separated list. The Contact header field allows a comma-separated - list unless the header field value is "*". - - - -Rosenberg, et. al. Standards Track [Page 29] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -7.3.1 Header Field Format - - Header fields follow the same generic header format as that given in - Section 2.2 of RFC 2822 [3]. Each header field consists of a field - name followed by a colon (":") and the field value. - - field-name: field-value - - The formal grammar for a message-header specified in Section 25 - allows for an arbitrary amount of whitespace on either side of the - colon; however, implementations should avoid spaces between the field - name and the colon and use a single space (SP) between the colon and - the field-value. - - Subject: lunch - Subject : lunch - Subject :lunch - Subject: lunch - - Thus, the above are all valid and equivalent, but the last is the - preferred form. - - Header fields can be extended over multiple lines by preceding each - extra line with at least one SP or horizontal tab (HT). The line - break and the whitespace at the beginning of the next line are - treated as a single SP character. Thus, the following are - equivalent: - - Subject: I know you're there, pick up the phone and talk to me! - Subject: I know you're there, - pick up the phone - and talk to me! - - The relative order of header fields with different field names is not - significant. However, it is RECOMMENDED that header fields which are - needed for proxy processing (Via, Route, Record-Route, Proxy-Require, - Max-Forwards, and Proxy-Authorization, for example) appear towards - the top of the message to facilitate rapid parsing. The relative - order of header field rows with the same field name is important. - Multiple header field rows with the same field-name MAY be present in - a message if and only if the entire field-value for that header field - is defined as a comma-separated list (that is, if follows the grammar - defined in Section 7.3). It MUST be possible to combine the multiple - header field rows into one "field-name: field-value" pair, without - changing the semantics of the message, by appending each subsequent - field-value to the first, each separated by a comma. The exceptions - to this rule are the WWW-Authenticate, Authorization, Proxy- - Authenticate, and Proxy-Authorization header fields. Multiple header - - - -Rosenberg, et. al. Standards Track [Page 30] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - field rows with these names MAY be present in a message, but since - their grammar does not follow the general form listed in Section 7.3, - they MUST NOT be combined into a single header field row. - - Implementations MUST be able to process multiple header field rows - with the same name in any combination of the single-value-per-line or - comma-separated value forms. - - The following groups of header field rows are valid and equivalent: - - Route: - Subject: Lunch - Route: - Route: - - Route: , - Route: - Subject: Lunch - - Subject: Lunch - Route: , , - - - Each of the following blocks is valid but not equivalent to the - others: - - Route: - Route: - Route: - - Route: - Route: - Route: - - Route: ,, - - - The format of a header field-value is defined per header-name. It - will always be either an opaque sequence of TEXT-UTF8 octets, or a - combination of whitespace, tokens, separators, and quoted strings. - Many existing header fields will adhere to the general form of a - value followed by a semi-colon separated sequence of parameter-name, - parameter-value pairs: - - field-name: field-value *(;parameter-name=parameter-value) - - - - - - -Rosenberg, et. al. Standards Track [Page 31] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Even though an arbitrary number of parameter pairs may be attached to - a header field value, any given parameter-name MUST NOT appear more - than once. - - When comparing header fields, field names are always case- - insensitive. Unless otherwise stated in the definition of a - particular header field, field values, parameter names, and parameter - values are case-insensitive. Tokens are always case-insensitive. - Unless specified otherwise, values expressed as quoted strings are - case-sensitive. For example, - - Contact: ;expires=3600 - - is equivalent to - - CONTACT: ;ExPiReS=3600 - - and - - Content-Disposition: session;handling=optional - - is equivalent to - - content-disposition: Session;HANDLING=OPTIONAL - - The following two header fields are not equivalent: - - Warning: 370 devnull "Choose a bigger pipe" - Warning: 370 devnull "CHOOSE A BIGGER PIPE" - -7.3.2 Header Field Classification - - Some header fields only make sense in requests or responses. These - are called request header fields and response header fields, - respectively. If a header field appears in a message not matching - its category (such as a request header field in a response), it MUST - be ignored. Section 20 defines the classification of each header - field. - -7.3.3 Compact Form - - SIP provides a mechanism to represent common header field names in an - abbreviated form. This may be useful when messages would otherwise - become too large to be carried on the transport available to it - (exceeding the maximum transmission unit (MTU) when using UDP, for - example). These compact forms are defined in Section 20. A compact - form MAY be substituted for the longer form of a header field name at - any time without changing the semantics of the message. A header - - - -Rosenberg, et. al. Standards Track [Page 32] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - field name MAY appear in both long and short forms within the same - message. Implementations MUST accept both the long and short forms - of each header name. - -7.4 Bodies - - Requests, including new requests defined in extensions to this - specification, MAY contain message bodies unless otherwise noted. - The interpretation of the body depends on the request method. - - For response messages, the request method and the response status - code determine the type and interpretation of any message body. All - responses MAY include a body. - -7.4.1 Message Body Type - - The Internet media type of the message body MUST be given by the - Content-Type header field. If the body has undergone any encoding - such as compression, then this MUST be indicated by the Content- - Encoding header field; otherwise, Content-Encoding MUST be omitted. - If applicable, the character set of the message body is indicated as - part of the Content-Type header-field value. - - The "multipart" MIME type defined in RFC 2046 [11] MAY be used within - the body of the message. Implementations that send requests - containing multipart message bodies MUST send a session description - as a non-multipart message body if the remote implementation requests - this through an Accept header field that does not contain multipart. - - SIP messages MAY contain binary bodies or body parts. When no - explicit charset parameter is provided by the sender, media subtypes - of the "text" type are defined to have a default charset value of - "UTF-8". - -7.4.2 Message Body Length - - The body length in bytes is provided by the Content-Length header - field. Section 20.14 describes the necessary contents of this header - field in detail. - - The "chunked" transfer encoding of HTTP/1.1 MUST NOT be used for SIP. - (Note: The chunked encoding modifies the body of a message in order - to transfer it as a series of chunks, each with its own size - indicator.) - - - - - - - -Rosenberg, et. al. Standards Track [Page 33] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -7.5 Framing SIP Messages - - Unlike HTTP, SIP implementations can use UDP or other unreliable - datagram protocols. Each such datagram carries one request or - response. See Section 18 on constraints on usage of unreliable - transports. - - Implementations processing SIP messages over stream-oriented - transports MUST ignore any CRLF appearing before the start-line - [H4.1]. - - The Content-Length header field value is used to locate the end of - each SIP message in a stream. It will always be present when SIP - messages are sent over stream-oriented transports. - -8 General User Agent Behavior - - A user agent represents an end system. It contains a user agent - client (UAC), which generates requests, and a user agent server - (UAS), which responds to them. A UAC is capable of generating a - request based on some external stimulus (the user clicking a button, - or a signal on a PSTN line) and processing a response. A UAS is - capable of receiving a request and generating a response based on - user input, external stimulus, the result of a program execution, or - some other mechanism. - - When a UAC sends a request, the request passes through some number of - proxy servers, which forward the request towards the UAS. When the - UAS generates a response, the response is forwarded towards the UAC. - - UAC and UAS procedures depend strongly on two factors. First, based - on whether the request or response is inside or outside of a dialog, - and second, based on the method of a request. Dialogs are discussed - thoroughly in Section 12; they represent a peer-to-peer relationship - between user agents and are established by specific SIP methods, such - as INVITE. - - In this section, we discuss the method-independent rules for UAC and - UAS behavior when processing requests that are outside of a dialog. - This includes, of course, the requests which themselves establish a - dialog. - - Security procedures for requests and responses outside of a dialog - are described in Section 26. Specifically, mechanisms exist for the - UAS and UAC to mutually authenticate. A limited set of privacy - features are also supported through encryption of bodies using - S/MIME. - - - - -Rosenberg, et. al. Standards Track [Page 34] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -8.1 UAC Behavior - - This section covers UAC behavior outside of a dialog. - -8.1.1 Generating the Request - - A valid SIP request formulated by a UAC MUST, at a minimum, contain - the following header fields: To, From, CSeq, Call-ID, Max-Forwards, - and Via; all of these header fields are mandatory in all SIP - requests. These six header fields are the fundamental building - blocks of a SIP message, as they jointly provide for most of the - critical message routing services including the addressing of - messages, the routing of responses, limiting message propagation, - ordering of messages, and the unique identification of transactions. - These header fields are in addition to the mandatory request line, - which contains the method, Request-URI, and SIP version. - - Examples of requests sent outside of a dialog include an INVITE to - establish a session (Section 13) and an OPTIONS to query for - capabilities (Section 11). - -8.1.1.1 Request-URI - - The initial Request-URI of the message SHOULD be set to the value of - the URI in the To field. One notable exception is the REGISTER - method; behavior for setting the Request-URI of REGISTER is given in - Section 10. It may also be undesirable for privacy reasons or - convenience to set these fields to the same value (especially if the - originating UA expects that the Request-URI will be changed during - transit). - - In some special circumstances, the presence of a pre-existing route - set can affect the Request-URI of the message. A pre-existing route - set is an ordered set of URIs that identify a chain of servers, to - which a UAC will send outgoing requests that are outside of a dialog. - Commonly, they are configured on the UA by a user or service provider - manually, or through some other non-SIP mechanism. When a provider - wishes to configure a UA with an outbound proxy, it is RECOMMENDED - that this be done by providing it with a pre-existing route set with - a single URI, that of the outbound proxy. - - When a pre-existing route set is present, the procedures for - populating the Request-URI and Route header field detailed in Section - 12.2.1.1 MUST be followed (even though there is no dialog), using the - desired Request-URI as the remote target URI. - - - - - - -Rosenberg, et. al. Standards Track [Page 35] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -8.1.1.2 To - - The To header field first and foremost specifies the desired - "logical" recipient of the request, or the address-of-record of the - user or resource that is the target of this request. This may or may - not be the ultimate recipient of the request. The To header field - MAY contain a SIP or SIPS URI, but it may also make use of other URI - schemes (the tel URL (RFC 2806 [9]), for example) when appropriate. - All SIP implementations MUST support the SIP URI scheme. Any - implementation that supports TLS MUST support the SIPS URI scheme. - The To header field allows for a display name. - - A UAC may learn how to populate the To header field for a particular - request in a number of ways. Usually the user will suggest the To - header field through a human interface, perhaps inputting the URI - manually or selecting it from some sort of address book. Frequently, - the user will not enter a complete URI, but rather a string of digits - or letters (for example, "bob"). It is at the discretion of the UA - to choose how to interpret this input. Using the string to form the - user part of a SIP URI implies that the UA wishes the name to be - resolved in the domain to the right-hand side (RHS) of the at-sign in - the SIP URI (for instance, sip:bob@example.com). Using the string to - form the user part of a SIPS URI implies that the UA wishes to - communicate securely, and that the name is to be resolved in the - domain to the RHS of the at-sign. The RHS will frequently be the - home domain of the requestor, which allows for the home domain to - process the outgoing request. This is useful for features like - "speed dial" that require interpretation of the user part in the home - domain. The tel URL may be used when the UA does not wish to specify - the domain that should interpret a telephone number that has been - input by the user. Rather, each domain through which the request - passes would be given that opportunity. As an example, a user in an - airport might log in and send requests through an outbound proxy in - the airport. If they enter "411" (this is the phone number for local - directory assistance in the United States), that needs to be - interpreted and processed by the outbound proxy in the airport, not - the user's home domain. In this case, tel:411 would be the right - choice. - - A request outside of a dialog MUST NOT contain a To tag; the tag in - the To field of a request identifies the peer of the dialog. Since - no dialog is established, no tag is present. - - For further information on the To header field, see Section 20.39. - The following is an example of a valid To header field: - - To: Carol - - - - -Rosenberg, et. al. Standards Track [Page 36] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -8.1.1.3 From - - The From header field indicates the logical identity of the initiator - of the request, possibly the user's address-of-record. Like the To - header field, it contains a URI and optionally a display name. It is - used by SIP elements to determine which processing rules to apply to - a request (for example, automatic call rejection). As such, it is - very important that the From URI not contain IP addresses or the FQDN - of the host on which the UA is running, since these are not logical - names. - - The From header field allows for a display name. A UAC SHOULD use - the display name "Anonymous", along with a syntactically correct, but - otherwise meaningless URI (like sip:thisis@anonymous.invalid), if the - identity of the client is to remain hidden. - - Usually, the value that populates the From header field in requests - generated by a particular UA is pre-provisioned by the user or by the - administrators of the user's local domain. If a particular UA is - used by multiple users, it might have switchable profiles that - include a URI corresponding to the identity of the profiled user. - Recipients of requests can authenticate the originator of a request - in order to ascertain that they are who their From header field - claims they are (see Section 22 for more on authentication). - - The From field MUST contain a new "tag" parameter, chosen by the UAC. - See Section 19.3 for details on choosing a tag. - - For further information on the From header field, see Section 20.20. - Examples: - - From: "Bob" ;tag=a48s - From: sip:+12125551212@phone2net.com;tag=887s - From: Anonymous ;tag=hyh8 - -8.1.1.4 Call-ID - - The Call-ID header field acts as a unique identifier to group - together a series of messages. It MUST be the same for all requests - and responses sent by either UA in a dialog. It SHOULD be the same - in each registration from a UA. - - In a new request created by a UAC outside of any dialog, the Call-ID - header field MUST be selected by the UAC as a globally unique - identifier over space and time unless overridden by method-specific - behavior. All SIP UAs must have a means to guarantee that the Call- - ID header fields they produce will not be inadvertently generated by - any other UA. Note that when requests are retried after certain - - - -Rosenberg, et. al. Standards Track [Page 37] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - failure responses that solicit an amendment to a request (for - example, a challenge for authentication), these retried requests are - not considered new requests, and therefore do not need new Call-ID - header fields; see Section 8.1.3.5. - - Use of cryptographically random identifiers (RFC 1750 [12]) in the - generation of Call-IDs is RECOMMENDED. Implementations MAY use the - form "localid@host". Call-IDs are case-sensitive and are simply - compared byte-by-byte. - - Using cryptographically random identifiers provides some - protection against session hijacking and reduces the likelihood of - unintentional Call-ID collisions. - - No provisioning or human interface is required for the selection of - the Call-ID header field value for a request. - - For further information on the Call-ID header field, see Section - 20.8. - - Example: - - Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@foo.bar.com - -8.1.1.5 CSeq - - The CSeq header field serves as a way to identify and order - transactions. It consists of a sequence number and a method. The - method MUST match that of the request. For non-REGISTER requests - outside of a dialog, the sequence number value is arbitrary. The - sequence number value MUST be expressible as a 32-bit unsigned - integer and MUST be less than 2**31. As long as it follows the above - guidelines, a client may use any mechanism it would like to select - CSeq header field values. - - Section 12.2.1.1 discusses construction of the CSeq for requests - within a dialog. - - Example: - - CSeq: 4711 INVITE - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 38] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -8.1.1.6 Max-Forwards - - The Max-Forwards header field serves to limit the number of hops a - request can transit on the way to its destination. It consists of an - integer that is decremented by one at each hop. If the Max-Forwards - value reaches 0 before the request reaches its destination, it will - be rejected with a 483(Too Many Hops) error response. - - A UAC MUST insert a Max-Forwards header field into each request it - originates with a value that SHOULD be 70. This number was chosen to - be sufficiently large to guarantee that a request would not be - dropped in any SIP network when there were no loops, but not so large - as to consume proxy resources when a loop does occur. Lower values - should be used with caution and only in networks where topologies are - known by the UA. - -8.1.1.7 Via - - The Via header field indicates the transport used for the transaction - and identifies the location where the response is to be sent. A Via - header field value is added only after the transport that will be - used to reach the next hop has been selected (which may involve the - usage of the procedures in [4]). - - When the UAC creates a request, it MUST insert a Via into that - request. The protocol name and protocol version in the header field - MUST be SIP and 2.0, respectively. The Via header field value MUST - contain a branch parameter. This parameter is used to identify the - transaction created by that request. This parameter is used by both - the client and the server. - - The branch parameter value MUST be unique across space and time for - all requests sent by the UA. The exceptions to this rule are CANCEL - and ACK for non-2xx responses. As discussed below, a CANCEL request - will have the same value of the branch parameter as the request it - cancels. As discussed in Section 17.1.1.3, an ACK for a non-2xx - response will also have the same branch ID as the INVITE whose - response it acknowledges. - - The uniqueness property of the branch ID parameter, to facilitate - its use as a transaction ID, was not part of RFC 2543. - - The branch ID inserted by an element compliant with this - specification MUST always begin with the characters "z9hG4bK". These - 7 characters are used as a magic cookie (7 is deemed sufficient to - ensure that an older RFC 2543 implementation would not pick such a - value), so that servers receiving the request can determine that the - branch ID was constructed in the fashion described by this - - - -Rosenberg, et. al. Standards Track [Page 39] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - specification (that is, globally unique). Beyond this requirement, - the precise format of the branch token is implementation-defined. - - The Via header maddr, ttl, and sent-by components will be set when - the request is processed by the transport layer (Section 18). - - Via processing for proxies is described in Section 16.6 Item 8 and - Section 16.7 Item 3. - -8.1.1.8 Contact - - The Contact header field provides a SIP or SIPS URI that can be used - to contact that specific instance of the UA for subsequent requests. - The Contact header field MUST be present and contain exactly one SIP - or SIPS URI in any request that can result in the establishment of a - dialog. For the methods defined in this specification, that includes - only the INVITE request. For these requests, the scope of the - Contact is global. That is, the Contact header field value contains - the URI at which the UA would like to receive requests, and this URI - MUST be valid even if used in subsequent requests outside of any - dialogs. - - If the Request-URI or top Route header field value contains a SIPS - URI, the Contact header field MUST contain a SIPS URI as well. - - For further information on the Contact header field, see Section - 20.10. - -8.1.1.9 Supported and Require - - If the UAC supports extensions to SIP that can be applied by the - server to the response, the UAC SHOULD include a Supported header - field in the request listing the option tags (Section 19.2) for those - extensions. - - The option tags listed MUST only refer to extensions defined in - standards-track RFCs. This is to prevent servers from insisting that - clients implement non-standard, vendor-defined features in order to - receive service. Extensions defined by experimental and - informational RFCs are explicitly excluded from usage with the - Supported header field in a request, since they too are often used to - document vendor-defined extensions. - - If the UAC wishes to insist that a UAS understand an extension that - the UAC will apply to the request in order to process the request, it - MUST insert a Require header field into the request listing the - option tag for that extension. If the UAC wishes to apply an - extension to the request and insist that any proxies that are - - - -Rosenberg, et. al. Standards Track [Page 40] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - traversed understand that extension, it MUST insert a Proxy-Require - header field into the request listing the option tag for that - extension. - - As with the Supported header field, the option tags in the Require - and Proxy-Require header fields MUST only refer to extensions defined - in standards-track RFCs. - -8.1.1.10 Additional Message Components - - After a new request has been created, and the header fields described - above have been properly constructed, any additional optional header - fields are added, as are any header fields specific to the method. - - SIP requests MAY contain a MIME-encoded message-body. Regardless of - the type of body that a request contains, certain header fields must - be formulated to characterize the contents of the body. For further - information on these header fields, see Sections 20.11 through 20.15. - -8.1.2 Sending the Request - - The destination for the request is then computed. Unless there is - local policy specifying otherwise, the destination MUST be determined - by applying the DNS procedures described in [4] as follows. If the - first element in the route set indicated a strict router (resulting - in forming the request as described in Section 12.2.1.1), the - procedures MUST be applied to the Request-URI of the request. - Otherwise, the procedures are applied to the first Route header field - value in the request (if one exists), or to the request's Request-URI - if there is no Route header field present. These procedures yield an - ordered set of address, port, and transports to attempt. Independent - of which URI is used as input to the procedures of [4], if the - Request-URI specifies a SIPS resource, the UAC MUST follow the - procedures of [4] as if the input URI were a SIPS URI. - - Local policy MAY specify an alternate set of destinations to attempt. - If the Request-URI contains a SIPS URI, any alternate destinations - MUST be contacted with TLS. Beyond that, there are no restrictions - on the alternate destinations if the request contains no Route header - field. This provides a simple alternative to a pre-existing route - set as a way to specify an outbound proxy. However, that approach - for configuring an outbound proxy is NOT RECOMMENDED; a pre-existing - route set with a single URI SHOULD be used instead. If the request - contains a Route header field, the request SHOULD be sent to the - locations derived from its topmost value, but MAY be sent to any - server that the UA is certain will honor the Route and Request-URI - policies specified in this document (as opposed to those in RFC - 2543). In particular, a UAC configured with an outbound proxy SHOULD - - - -Rosenberg, et. al. Standards Track [Page 41] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - attempt to send the request to the location indicated in the first - Route header field value instead of adopting the policy of sending - all messages to the outbound proxy. - - This ensures that outbound proxies that do not add Record-Route - header field values will drop out of the path of subsequent - requests. It allows endpoints that cannot resolve the first Route - URI to delegate that task to an outbound proxy. - - The UAC SHOULD follow the procedures defined in [4] for stateful - elements, trying each address until a server is contacted. Each try - constitutes a new transaction, and therefore each carries a different - topmost Via header field value with a new branch parameter. - Furthermore, the transport value in the Via header field is set to - whatever transport was determined for the target server. - -8.1.3 Processing Responses - - Responses are first processed by the transport layer and then passed - up to the transaction layer. The transaction layer performs its - processing and then passes the response up to the TU. The majority - of response processing in the TU is method specific. However, there - are some general behaviors independent of the method. - -8.1.3.1 Transaction Layer Errors - - In some cases, the response returned by the transaction layer will - not be a SIP message, but rather a transaction layer error. When a - timeout error is received from the transaction layer, it MUST be - treated as if a 408 (Request Timeout) status code has been received. - If a fatal transport error is reported by the transport layer - (generally, due to fatal ICMP errors in UDP or connection failures in - TCP), the condition MUST be treated as a 503 (Service Unavailable) - status code. - -8.1.3.2 Unrecognized Responses - - A UAC MUST treat any final response it does not recognize as being - equivalent to the x00 response code of that class, and MUST be able - to process the x00 response code for all classes. For example, if a - UAC receives an unrecognized response code of 431, it can safely - assume that there was something wrong with its request and treat the - response as if it had received a 400 (Bad Request) response code. A - UAC MUST treat any provisional response different than 100 that it - does not recognize as 183 (Session Progress). A UAC MUST be able to - process 100 and 183 responses. - - - - - -Rosenberg, et. al. Standards Track [Page 42] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -8.1.3.3 Vias - - If more than one Via header field value is present in a response, the - UAC SHOULD discard the message. - - The presence of additional Via header field values that precede - the originator of the request suggests that the message was - misrouted or possibly corrupted. - -8.1.3.4 Processing 3xx Responses - - Upon receipt of a redirection response (for example, a 301 response - status code), clients SHOULD use the URI(s) in the Contact header - field to formulate one or more new requests based on the redirected - request. This process is similar to that of a proxy recursing on a - 3xx class response as detailed in Sections 16.5 and 16.6. A client - starts with an initial target set containing exactly one URI, the - Request-URI of the original request. If a client wishes to formulate - new requests based on a 3xx class response to that request, it places - the URIs to try into the target set. Subject to the restrictions in - this specification, a client can choose which Contact URIs it places - into the target set. As with proxy recursion, a client processing - 3xx class responses MUST NOT add any given URI to the target set more - than once. If the original request had a SIPS URI in the Request- - URI, the client MAY choose to recurse to a non-SIPS URI, but SHOULD - inform the user of the redirection to an insecure URI. - - Any new request may receive 3xx responses themselves containing - the original URI as a contact. Two locations can be configured to - redirect to each other. Placing any given URI in the target set - only once prevents infinite redirection loops. - - As the target set grows, the client MAY generate new requests to the - URIs in any order. A common mechanism is to order the set by the "q" - parameter value from the Contact header field value. Requests to the - URIs MAY be generated serially or in parallel. One approach is to - process groups of decreasing q-values serially and process the URIs - in each q-value group in parallel. Another is to perform only serial - processing in decreasing q-value order, arbitrarily choosing between - contacts of equal q-value. - - If contacting an address in the list results in a failure, as defined - in the next paragraph, the element moves to the next address in the - list, until the list is exhausted. If the list is exhausted, then - the request has failed. - - - - - - -Rosenberg, et. al. Standards Track [Page 43] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Failures SHOULD be detected through failure response codes (codes - greater than 399); for network errors the client transaction will - report any transport layer failures to the transaction user. Note - that some response codes (detailed in 8.1.3.5) indicate that the - request can be retried; requests that are reattempted should not be - considered failures. - - When a failure for a particular contact address is received, the - client SHOULD try the next contact address. This will involve - creating a new client transaction to deliver a new request. - - In order to create a request based on a contact address in a 3xx - response, a UAC MUST copy the entire URI from the target set into the - Request-URI, except for the "method-param" and "header" URI - parameters (see Section 19.1.1 for a definition of these parameters). - It uses the "header" parameters to create header field values for the - new request, overwriting header field values associated with the - redirected request in accordance with the guidelines in Section - 19.1.5. - - Note that in some instances, header fields that have been - communicated in the contact address may instead append to existing - request header fields in the original redirected request. As a - general rule, if the header field can accept a comma-separated list - of values, then the new header field value MAY be appended to any - existing values in the original redirected request. If the header - field does not accept multiple values, the value in the original - redirected request MAY be overwritten by the header field value - communicated in the contact address. For example, if a contact - address is returned with the following value: - - sip:user@host?Subject=foo&Call-Info= - - Then any Subject header field in the original redirected request is - overwritten, but the HTTP URL is merely appended to any existing - Call-Info header field values. - - It is RECOMMENDED that the UAC reuse the same To, From, and Call-ID - used in the original redirected request, but the UAC MAY also choose - to update the Call-ID header field value for new requests, for - example. - - Finally, once the new request has been constructed, it is sent using - a new client transaction, and therefore MUST have a new branch ID in - the top Via field as discussed in Section 8.1.1.7. - - - - - - -Rosenberg, et. al. Standards Track [Page 44] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - In all other respects, requests sent upon receipt of a redirect - response SHOULD re-use the header fields and bodies of the original - request. - - In some instances, Contact header field values may be cached at UAC - temporarily or permanently depending on the status code received and - the presence of an expiration interval; see Sections 21.3.2 and - 21.3.3. - -8.1.3.5 Processing 4xx Responses - - Certain 4xx response codes require specific UA processing, - independent of the method. - - If a 401 (Unauthorized) or 407 (Proxy Authentication Required) - response is received, the UAC SHOULD follow the authorization - procedures of Section 22.2 and Section 22.3 to retry the request with - credentials. - - If a 413 (Request Entity Too Large) response is received (Section - 21.4.11), the request contained a body that was longer than the UAS - was willing to accept. If possible, the UAC SHOULD retry the - request, either omitting the body or using one of a smaller length. - - If a 415 (Unsupported Media Type) response is received (Section - 21.4.13), the request contained media types not supported by the UAS. - The UAC SHOULD retry sending the request, this time only using - content with types listed in the Accept header field in the response, - with encodings listed in the Accept-Encoding header field in the - response, and with languages listed in the Accept-Language in the - response. - - If a 416 (Unsupported URI Scheme) response is received (Section - 21.4.14), the Request-URI used a URI scheme not supported by the - server. The client SHOULD retry the request, this time, using a SIP - URI. - - If a 420 (Bad Extension) response is received (Section 21.4.15), the - request contained a Require or Proxy-Require header field listing an - option-tag for a feature not supported by a proxy or UAS. The UAC - SHOULD retry the request, this time omitting any extensions listed in - the Unsupported header field in the response. - - In all of the above cases, the request is retried by creating a new - request with the appropriate modifications. This new request - constitutes a new transaction and SHOULD have the same value of the - Call-ID, To, and From of the previous request, but the CSeq should - contain a new sequence number that is one higher than the previous. - - - -Rosenberg, et. al. Standards Track [Page 45] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - With other 4xx responses, including those yet to be defined, a retry - may or may not be possible depending on the method and the use case. - -8.2 UAS Behavior - - When a request outside of a dialog is processed by a UAS, there is a - set of processing rules that are followed, independent of the method. - Section 12 gives guidance on how a UAS can tell whether a request is - inside or outside of a dialog. - - Note that request processing is atomic. If a request is accepted, - all state changes associated with it MUST be performed. If it is - rejected, all state changes MUST NOT be performed. - - UASs SHOULD process the requests in the order of the steps that - follow in this section (that is, starting with authentication, then - inspecting the method, the header fields, and so on throughout the - remainder of this section). - -8.2.1 Method Inspection - - Once a request is authenticated (or authentication is skipped), the - UAS MUST inspect the method of the request. If the UAS recognizes - but does not support the method of a request, it MUST generate a 405 - (Method Not Allowed) response. Procedures for generating responses - are described in Section 8.2.6. The UAS MUST also add an Allow - header field to the 405 (Method Not Allowed) response. The Allow - header field MUST list the set of methods supported by the UAS - generating the message. The Allow header field is presented in - Section 20.5. - - If the method is one supported by the server, processing continues. - -8.2.2 Header Inspection - - If a UAS does not understand a header field in a request (that is, - the header field is not defined in this specification or in any - supported extension), the server MUST ignore that header field and - continue processing the message. A UAS SHOULD ignore any malformed - header fields that are not necessary for processing requests. - -8.2.2.1 To and Request-URI - - The To header field identifies the original recipient of the request - designated by the user identified in the From field. The original - recipient may or may not be the UAS processing the request, due to - call forwarding or other proxy operations. A UAS MAY apply any - policy it wishes to determine whether to accept requests when the To - - - -Rosenberg, et. al. Standards Track [Page 46] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - header field is not the identity of the UAS. However, it is - RECOMMENDED that a UAS accept requests even if they do not recognize - the URI scheme (for example, a tel: URI) in the To header field, or - if the To header field does not address a known or current user of - this UAS. If, on the other hand, the UAS decides to reject the - request, it SHOULD generate a response with a 403 (Forbidden) status - code and pass it to the server transaction for transmission. - - However, the Request-URI identifies the UAS that is to process the - request. If the Request-URI uses a scheme not supported by the UAS, - it SHOULD reject the request with a 416 (Unsupported URI Scheme) - response. If the Request-URI does not identify an address that the - UAS is willing to accept requests for, it SHOULD reject the request - with a 404 (Not Found) response. Typically, a UA that uses the - REGISTER method to bind its address-of-record to a specific contact - address will see requests whose Request-URI equals that contact - address. Other potential sources of received Request-URIs include - the Contact header fields of requests and responses sent by the UA - that establish or refresh dialogs. - -8.2.2.2 Merged Requests - - If the request has no tag in the To header field, the UAS core MUST - check the request against ongoing transactions. If the From tag, - Call-ID, and CSeq exactly match those associated with an ongoing - transaction, but the request does not match that transaction (based - on the matching rules in Section 17.2.3), the UAS core SHOULD - generate a 482 (Loop Detected) response and pass it to the server - transaction. - - The same request has arrived at the UAS more than once, following - different paths, most likely due to forking. The UAS processes - the first such request received and responds with a 482 (Loop - Detected) to the rest of them. - -8.2.2.3 Require - - Assuming the UAS decides that it is the proper element to process the - request, it examines the Require header field, if present. - - The Require header field is used by a UAC to tell a UAS about SIP - extensions that the UAC expects the UAS to support in order to - process the request properly. Its format is described in Section - 20.32. If a UAS does not understand an option-tag listed in a - Require header field, it MUST respond by generating a response with - status code 420 (Bad Extension). The UAS MUST add an Unsupported - header field, and list in it those options it does not understand - amongst those in the Require header field of the request. - - - -Rosenberg, et. al. Standards Track [Page 47] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Note that Require and Proxy-Require MUST NOT be used in a SIP CANCEL - request, or in an ACK request sent for a non-2xx response. These - header fields MUST be ignored if they are present in these requests. - - An ACK request for a 2xx response MUST contain only those Require and - Proxy-Require values that were present in the initial request. - - Example: - - UAC->UAS: INVITE sip:watson@bell-telephone.com SIP/2.0 - Require: 100rel - - UAS->UAC: SIP/2.0 420 Bad Extension - Unsupported: 100rel - - This behavior ensures that the client-server interaction will - proceed without delay when all options are understood by both - sides, and only slow down if options are not understood (as in the - example above). For a well-matched client-server pair, the - interaction proceeds quickly, saving a round-trip often required - by negotiation mechanisms. In addition, it also removes ambiguity - when the client requires features that the server does not - understand. Some features, such as call handling fields, are only - of interest to end systems. - -8.2.3 Content Processing - - Assuming the UAS understands any extensions required by the client, - the UAS examines the body of the message, and the header fields that - describe it. If there are any bodies whose type (indicated by the - Content-Type), language (indicated by the Content-Language) or - encoding (indicated by the Content-Encoding) are not understood, and - that body part is not optional (as indicated by the Content- - Disposition header field), the UAS MUST reject the request with a 415 - (Unsupported Media Type) response. The response MUST contain an - Accept header field listing the types of all bodies it understands, - in the event the request contained bodies of types not supported by - the UAS. If the request contained content encodings not understood - by the UAS, the response MUST contain an Accept-Encoding header field - listing the encodings understood by the UAS. If the request - contained content with languages not understood by the UAS, the - response MUST contain an Accept-Language header field indicating the - languages understood by the UAS. Beyond these checks, body handling - depends on the method and type. For further information on the - processing of content-specific header fields, see Section 7.4 as well - as Section 20.11 through 20.15. - - - - - -Rosenberg, et. al. Standards Track [Page 48] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -8.2.4 Applying Extensions - - A UAS that wishes to apply some extension when generating the - response MUST NOT do so unless support for that extension is - indicated in the Supported header field in the request. If the - desired extension is not supported, the server SHOULD rely only on - baseline SIP and any other extensions supported by the client. In - rare circumstances, where the server cannot process the request - without the extension, the server MAY send a 421 (Extension Required) - response. This response indicates that the proper response cannot be - generated without support of a specific extension. The needed - extension(s) MUST be included in a Require header field in the - response. This behavior is NOT RECOMMENDED, as it will generally - break interoperability. - - Any extensions applied to a non-421 response MUST be listed in a - Require header field included in the response. Of course, the server - MUST NOT apply extensions not listed in the Supported header field in - the request. As a result of this, the Require header field in a - response will only ever contain option tags defined in standards- - track RFCs. - -8.2.5 Processing the Request - - Assuming all of the checks in the previous subsections are passed, - the UAS processing becomes method-specific. Section 10 covers the - REGISTER request, Section 11 covers the OPTIONS request, Section 13 - covers the INVITE request, and Section 15 covers the BYE request. - -8.2.6 Generating the Response - - When a UAS wishes to construct a response to a request, it follows - the general procedures detailed in the following subsections. - Additional behaviors specific to the response code in question, which - are not detailed in this section, may also be required. - - Once all procedures associated with the creation of a response have - been completed, the UAS hands the response back to the server - transaction from which it received the request. - -8.2.6.1 Sending a Provisional Response - - One largely non-method-specific guideline for the generation of - responses is that UASs SHOULD NOT issue a provisional response for a - non-INVITE request. Rather, UASs SHOULD generate a final response to - a non-INVITE request as soon as possible. - - - - - -Rosenberg, et. al. Standards Track [Page 49] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - When a 100 (Trying) response is generated, any Timestamp header field - present in the request MUST be copied into this 100 (Trying) - response. If there is a delay in generating the response, the UAS - SHOULD add a delay value into the Timestamp value in the response. - This value MUST contain the difference between the time of sending of - the response and receipt of the request, measured in seconds. - -8.2.6.2 Headers and Tags - - The From field of the response MUST equal the From header field of - the request. The Call-ID header field of the response MUST equal the - Call-ID header field of the request. The CSeq header field of the - response MUST equal the CSeq field of the request. The Via header - field values in the response MUST equal the Via header field values - in the request and MUST maintain the same ordering. - - If a request contained a To tag in the request, the To header field - in the response MUST equal that of the request. However, if the To - header field in the request did not contain a tag, the URI in the To - header field in the response MUST equal the URI in the To header - field; additionally, the UAS MUST add a tag to the To header field in - the response (with the exception of the 100 (Trying) response, in - which a tag MAY be present). This serves to identify the UAS that is - responding, possibly resulting in a component of a dialog ID. The - same tag MUST be used for all responses to that request, both final - and provisional (again excepting the 100 (Trying)). Procedures for - the generation of tags are defined in Section 19.3. - -8.2.7 Stateless UAS Behavior - - A stateless UAS is a UAS that does not maintain transaction state. - It replies to requests normally, but discards any state that would - ordinarily be retained by a UAS after a response has been sent. If a - stateless UAS receives a retransmission of a request, it regenerates - the response and resends it, just as if it were replying to the first - instance of the request. A UAS cannot be stateless unless the request - processing for that method would always result in the same response - if the requests are identical. This rules out stateless registrars, - for example. Stateless UASs do not use a transaction layer; they - receive requests directly from the transport layer and send responses - directly to the transport layer. - - The stateless UAS role is needed primarily to handle unauthenticated - requests for which a challenge response is issued. If - unauthenticated requests were handled statefully, then malicious - floods of unauthenticated requests could create massive amounts of - - - - - -Rosenberg, et. al. Standards Track [Page 50] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - transaction state that might slow or completely halt call processing - in a UAS, effectively creating a denial of service condition; for - more information see Section 26.1.5. - - The most important behaviors of a stateless UAS are the following: - - o A stateless UAS MUST NOT send provisional (1xx) responses. - - o A stateless UAS MUST NOT retransmit responses. - - o A stateless UAS MUST ignore ACK requests. - - o A stateless UAS MUST ignore CANCEL requests. - - o To header tags MUST be generated for responses in a stateless - manner - in a manner that will generate the same tag for the - same request consistently. For information on tag construction - see Section 19.3. - - In all other respects, a stateless UAS behaves in the same manner as - a stateful UAS. A UAS can operate in either a stateful or stateless - mode for each new request. - -8.3 Redirect Servers - - In some architectures it may be desirable to reduce the processing - load on proxy servers that are responsible for routing requests, and - improve signaling path robustness, by relying on redirection. - - Redirection allows servers to push routing information for a request - back in a response to the client, thereby taking themselves out of - the loop of further messaging for this transaction while still aiding - in locating the target of the request. When the originator of the - request receives the redirection, it will send a new request based on - the URI(s) it has received. By propagating URIs from the core of the - network to its edges, redirection allows for considerable network - scalability. - - A redirect server is logically constituted of a server transaction - layer and a transaction user that has access to a location service of - some kind (see Section 10 for more on registrars and location - services). This location service is effectively a database - containing mappings between a single URI and a set of one or more - alternative locations at which the target of that URI can be found. - - A redirect server does not issue any SIP requests of its own. After - receiving a request other than CANCEL, the server either refuses the - request or gathers the list of alternative locations from the - - - -Rosenberg, et. al. Standards Track [Page 51] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - location service and returns a final response of class 3xx. For - well-formed CANCEL requests, it SHOULD return a 2xx response. This - response ends the SIP transaction. The redirect server maintains - transaction state for an entire SIP transaction. It is the - responsibility of clients to detect forwarding loops between redirect - servers. - - When a redirect server returns a 3xx response to a request, it - populates the list of (one or more) alternative locations into the - Contact header field. An "expires" parameter to the Contact header - field values may also be supplied to indicate the lifetime of the - Contact data. - - The Contact header field contains URIs giving the new locations or - user names to try, or may simply specify additional transport - parameters. A 301 (Moved Permanently) or 302 (Moved Temporarily) - response may also give the same location and username that was - targeted by the initial request but specify additional transport - parameters such as a different server or multicast address to try, or - a change of SIP transport from UDP to TCP or vice versa. - - However, redirect servers MUST NOT redirect a request to a URI equal - to the one in the Request-URI; instead, provided that the URI does - not point to itself, the server MAY proxy the request to the - destination URI, or MAY reject it with a 404. - - If a client is using an outbound proxy, and that proxy actually - redirects requests, a potential arises for infinite redirection - loops. - - Note that a Contact header field value MAY also refer to a different - resource than the one originally called. For example, a SIP call - connected to PSTN gateway may need to deliver a special informational - announcement such as "The number you have dialed has been changed." - - A Contact response header field can contain any suitable URI - indicating where the called party can be reached, not limited to SIP - URIs. For example, it could contain URIs for phones, fax, or irc (if - they were defined) or a mailto: (RFC 2368 [32]) URL. Section 26.4.4 - discusses implications and limitations of redirecting a SIPS URI to a - non-SIPS URI. - - The "expires" parameter of a Contact header field value indicates how - long the URI is valid. The value of the parameter is a number - indicating seconds. If this parameter is not provided, the value of - the Expires header field determines how long the URI is valid. - Malformed values SHOULD be treated as equivalent to 3600. - - - - -Rosenberg, et. al. Standards Track [Page 52] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - This provides a modest level of backwards compatibility with RFC - 2543, which allowed absolute times in this header field. If an - absolute time is received, it will be treated as malformed, and - then default to 3600. - - Redirect servers MUST ignore features that are not understood - (including unrecognized header fields, any unknown option tags in - Require, or even method names) and proceed with the redirection of - the request in question. - -9 Canceling a Request - - The previous section has discussed general UA behavior for generating - requests and processing responses for requests of all methods. In - this section, we discuss a general purpose method, called CANCEL. - - The CANCEL request, as the name implies, is used to cancel a previous - request sent by a client. Specifically, it asks the UAS to cease - processing the request and to generate an error response to that - request. CANCEL has no effect on a request to which a UAS has - already given a final response. Because of this, it is most useful - to CANCEL requests to which it can take a server long time to - respond. For this reason, CANCEL is best for INVITE requests, which - can take a long time to generate a response. In that usage, a UAS - that receives a CANCEL request for an INVITE, but has not yet sent a - final response, would "stop ringing", and then respond to the INVITE - with a specific error response (a 487). - - CANCEL requests can be constructed and sent by both proxies and user - agent clients. Section 15 discusses under what conditions a UAC - would CANCEL an INVITE request, and Section 16.10 discusses proxy - usage of CANCEL. - - A stateful proxy responds to a CANCEL, rather than simply forwarding - a response it would receive from a downstream element. For that - reason, CANCEL is referred to as a "hop-by-hop" request, since it is - responded to at each stateful proxy hop. - -9.1 Client Behavior - - A CANCEL request SHOULD NOT be sent to cancel a request other than - INVITE. - - Since requests other than INVITE are responded to immediately, - sending a CANCEL for a non-INVITE request would always create a - race condition. - - - - - -Rosenberg, et. al. Standards Track [Page 53] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The following procedures are used to construct a CANCEL request. The - Request-URI, Call-ID, To, the numeric part of CSeq, and From header - fields in the CANCEL request MUST be identical to those in the - request being cancelled, including tags. A CANCEL constructed by a - client MUST have only a single Via header field value matching the - top Via value in the request being cancelled. Using the same values - for these header fields allows the CANCEL to be matched with the - request it cancels (Section 9.2 indicates how such matching occurs). - However, the method part of the CSeq header field MUST have a value - of CANCEL. This allows it to be identified and processed as a - transaction in its own right (See Section 17). - - If the request being cancelled contains a Route header field, the - CANCEL request MUST include that Route header field's values. - - This is needed so that stateless proxies are able to route CANCEL - requests properly. - - The CANCEL request MUST NOT contain any Require or Proxy-Require - header fields. - - Once the CANCEL is constructed, the client SHOULD check whether it - has received any response (provisional or final) for the request - being cancelled (herein referred to as the "original request"). - - If no provisional response has been received, the CANCEL request MUST - NOT be sent; rather, the client MUST wait for the arrival of a - provisional response before sending the request. If the original - request has generated a final response, the CANCEL SHOULD NOT be - sent, as it is an effective no-op, since CANCEL has no effect on - requests that have already generated a final response. When the - client decides to send the CANCEL, it creates a client transaction - for the CANCEL and passes it the CANCEL request along with the - destination address, port, and transport. The destination address, - port, and transport for the CANCEL MUST be identical to those used to - send the original request. - - If it was allowed to send the CANCEL before receiving a response - for the previous request, the server could receive the CANCEL - before the original request. - - Note that both the transaction corresponding to the original request - and the CANCEL transaction will complete independently. However, a - UAC canceling a request cannot rely on receiving a 487 (Request - Terminated) response for the original request, as an RFC 2543- - compliant UAS will not generate such a response. If there is no - final response for the original request in 64*T1 seconds (T1 is - - - - -Rosenberg, et. al. Standards Track [Page 54] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - defined in Section 17.1.1.1), the client SHOULD then consider the - original transaction cancelled and SHOULD destroy the client - transaction handling the original request. - -9.2 Server Behavior - - The CANCEL method requests that the TU at the server side cancel a - pending transaction. The TU determines the transaction to be - cancelled by taking the CANCEL request, and then assuming that the - request method is anything but CANCEL or ACK and applying the - transaction matching procedures of Section 17.2.3. The matching - transaction is the one to be cancelled. - - The processing of a CANCEL request at a server depends on the type of - server. A stateless proxy will forward it, a stateful proxy might - respond to it and generate some CANCEL requests of its own, and a UAS - will respond to it. See Section 16.10 for proxy treatment of CANCEL. - - A UAS first processes the CANCEL request according to the general UAS - processing described in Section 8.2. However, since CANCEL requests - are hop-by-hop and cannot be resubmitted, they cannot be challenged - by the server in order to get proper credentials in an Authorization - header field. Note also that CANCEL requests do not contain a - Require header field. - - If the UAS did not find a matching transaction for the CANCEL - according to the procedure above, it SHOULD respond to the CANCEL - with a 481 (Call Leg/Transaction Does Not Exist). If the transaction - for the original request still exists, the behavior of the UAS on - receiving a CANCEL request depends on whether it has already sent a - final response for the original request. If it has, the CANCEL - request has no effect on the processing of the original request, no - effect on any session state, and no effect on the responses generated - for the original request. If the UAS has not issued a final response - for the original request, its behavior depends on the method of the - original request. If the original request was an INVITE, the UAS - SHOULD immediately respond to the INVITE with a 487 (Request - Terminated). A CANCEL request has no impact on the processing of - transactions with any other method defined in this specification. - - Regardless of the method of the original request, as long as the - CANCEL matched an existing transaction, the UAS answers the CANCEL - request itself with a 200 (OK) response. This response is - constructed following the procedures described in Section 8.2.6 - noting that the To tag of the response to the CANCEL and the To tag - in the response to the original request SHOULD be the same. The - response to CANCEL is passed to the server transaction for - transmission. - - - -Rosenberg, et. al. Standards Track [Page 55] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -10 Registrations - -10.1 Overview - - SIP offers a discovery capability. If a user wants to initiate a - session with another user, SIP must discover the current host(s) at - which the destination user is reachable. This discovery process is - frequently accomplished by SIP network elements such as proxy servers - and redirect servers which are responsible for receiving a request, - determining where to send it based on knowledge of the location of - the user, and then sending it there. To do this, SIP network - elements consult an abstract service known as a location service, - which provides address bindings for a particular domain. These - address bindings map an incoming SIP or SIPS URI, sip:bob@biloxi.com, - for example, to one or more URIs that are somehow "closer" to the - desired user, sip:bob@engineering.biloxi.com, for example. - Ultimately, a proxy will consult a location service that maps a - received URI to the user agent(s) at which the desired recipient is - currently residing. - - Registration creates bindings in a location service for a particular - domain that associates an address-of-record URI with one or more - contact addresses. Thus, when a proxy for that domain receives a - request whose Request-URI matches the address-of-record, the proxy - will forward the request to the contact addresses registered to that - address-of-record. Generally, it only makes sense to register an - address-of-record at a domain's location service when requests for - that address-of-record would be routed to that domain. In most - cases, this means that the domain of the registration will need to - match the domain in the URI of the address-of-record. - - There are many ways by which the contents of the location service can - be established. One way is administratively. In the above example, - Bob is known to be a member of the engineering department through - access to a corporate database. However, SIP provides a mechanism - for a UA to create a binding explicitly. This mechanism is known as - registration. - - Registration entails sending a REGISTER request to a special type of - UAS known as a registrar. A registrar acts as the front end to the - location service for a domain, reading and writing mappings based on - the contents of REGISTER requests. This location service is then - typically consulted by a proxy server that is responsible for routing - requests for that domain. - - An illustration of the overall registration process is given in - Figure 2. Note that the registrar and proxy server are logical roles - that can be played by a single device in a network; for purposes of - - - -Rosenberg, et. al. Standards Track [Page 56] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - clarity the two are separated in this illustration. Also note that - UAs may send requests through a proxy server in order to reach a - registrar if the two are separate elements. - - SIP does not mandate a particular mechanism for implementing the - location service. The only requirement is that a registrar for some - domain MUST be able to read and write data to the location service, - and a proxy or a redirect server for that domain MUST be capable of - reading that same data. A registrar MAY be co-located with a - particular SIP proxy server for the same domain. - -10.2 Constructing the REGISTER Request - - REGISTER requests add, remove, and query bindings. A REGISTER - request can add a new binding between an address-of-record and one or - more contact addresses. Registration on behalf of a particular - address-of-record can be performed by a suitably authorized third - party. A client can also remove previous bindings or query to - determine which bindings are currently in place for an address-of- - record. - - Except as noted, the construction of the REGISTER request and the - behavior of clients sending a REGISTER request is identical to the - general UAC behavior described in Section 8.1 and Section 17.1. - - A REGISTER request does not establish a dialog. A UAC MAY include a - Route header field in a REGISTER request based on a pre-existing - route set as described in Section 8.1. The Record-Route header field - has no meaning in REGISTER requests or responses, and MUST be ignored - if present. In particular, the UAC MUST NOT create a new route set - based on the presence or absence of a Record-Route header field in - any response to a REGISTER request. - - The following header fields, except Contact, MUST be included in a - REGISTER request. A Contact header field MAY be included: - - Request-URI: The Request-URI names the domain of the location - service for which the registration is meant (for example, - "sip:chicago.com"). The "userinfo" and "@" components of the - SIP URI MUST NOT be present. - - To: The To header field contains the address of record whose - registration is to be created, queried, or modified. The To - header field and the Request-URI field typically differ, as - the former contains a user name. This address-of-record MUST - be a SIP URI or SIPS URI. - - - - - -Rosenberg, et. al. Standards Track [Page 57] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - From: The From header field contains the address-of-record of the - person responsible for the registration. The value is the - same as the To header field unless the request is a third- - party registration. - - Call-ID: All registrations from a UAC SHOULD use the same Call-ID - header field value for registrations sent to a particular - registrar. - - If the same client were to use different Call-ID values, a - registrar could not detect whether a delayed REGISTER request - might have arrived out of order. - - CSeq: The CSeq value guarantees proper ordering of REGISTER - requests. A UA MUST increment the CSeq value by one for each - REGISTER request with the same Call-ID. - - Contact: REGISTER requests MAY contain a Contact header field with - zero or more values containing address bindings. - - UAs MUST NOT send a new registration (that is, containing new Contact - header field values, as opposed to a retransmission) until they have - received a final response from the registrar for the previous one or - the previous REGISTER request has timed out. - - - - - - - - - - - - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 58] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - bob - +----+ - | UA | - | | - +----+ - | - |3)INVITE - | carol@chicago.com - chicago.com +--------+ V - +---------+ 2)Store|Location|4)Query +-----+ - |Registrar|=======>| Service|<=======|Proxy|sip.chicago.com - +---------+ +--------+=======>+-----+ - A 5)Resp | - | | - | | - 1)REGISTER| | - | | - +----+ | - | UA |<-------------------------------+ - cube2214a| | 6)INVITE - +----+ carol@cube2214a.chicago.com - carol - - Figure 2: REGISTER example - - The following Contact header parameters have a special meaning in - REGISTER requests: - - action: The "action" parameter from RFC 2543 has been deprecated. - UACs SHOULD NOT use the "action" parameter. - - expires: The "expires" parameter indicates how long the UA would - like the binding to be valid. The value is a number - indicating seconds. If this parameter is not provided, the - value of the Expires header field is used instead. - Implementations MAY treat values larger than 2**32-1 - (4294967295 seconds or 136 years) as equivalent to 2**32-1. - Malformed values SHOULD be treated as equivalent to 3600. - -10.2.1 Adding Bindings - - The REGISTER request sent to a registrar includes the contact - address(es) to which SIP requests for the address-of-record should be - forwarded. The address-of-record is included in the To header field - of the REGISTER request. - - - - - - -Rosenberg, et. al. Standards Track [Page 59] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The Contact header field values of the request typically consist of - SIP or SIPS URIs that identify particular SIP endpoints (for example, - "sip:carol@cube2214a.chicago.com"), but they MAY use any URI scheme. - A SIP UA can choose to register telephone numbers (with the tel URL, - RFC 2806 [9]) or email addresses (with a mailto URL, RFC 2368 [32]) - as Contacts for an address-of-record, for example. - - For example, Carol, with address-of-record "sip:carol@chicago.com", - would register with the SIP registrar of the domain chicago.com. Her - registrations would then be used by a proxy server in the chicago.com - domain to route requests for Carol's address-of-record to her SIP - endpoint. - - Once a client has established bindings at a registrar, it MAY send - subsequent registrations containing new bindings or modifications to - existing bindings as necessary. The 2xx response to the REGISTER - request will contain, in a Contact header field, a complete list of - bindings that have been registered for this address-of-record at this - registrar. - - If the address-of-record in the To header field of a REGISTER request - is a SIPS URI, then any Contact header field values in the request - SHOULD also be SIPS URIs. Clients should only register non-SIPS URIs - under a SIPS address-of-record when the security of the resource - represented by the contact address is guaranteed by other means. - This may be applicable to URIs that invoke protocols other than SIP, - or SIP devices secured by protocols other than TLS. - - Registrations do not need to update all bindings. Typically, a UA - only updates its own contact addresses. - -10.2.1.1 Setting the Expiration Interval of Contact Addresses - - When a client sends a REGISTER request, it MAY suggest an expiration - interval that indicates how long the client would like the - registration to be valid. (As described in Section 10.3, the - registrar selects the actual time interval based on its local - policy.) - - There are two ways in which a client can suggest an expiration - interval for a binding: through an Expires header field or an - "expires" Contact header parameter. The latter allows expiration - intervals to be suggested on a per-binding basis when more than one - binding is given in a single REGISTER request, whereas the former - suggests an expiration interval for all Contact header field values - that do not contain the "expires" parameter. - - - - - -Rosenberg, et. al. Standards Track [Page 60] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If neither mechanism for expressing a suggested expiration time is - present in a REGISTER, the client is indicating its desire for the - server to choose. - -10.2.1.2 Preferences among Contact Addresses - - If more than one Contact is sent in a REGISTER request, the - registering UA intends to associate all of the URIs in these Contact - header field values with the address-of-record present in the To - field. This list can be prioritized with the "q" parameter in the - Contact header field. The "q" parameter indicates a relative - preference for the particular Contact header field value compared to - other bindings for this address-of-record. Section 16.6 describes - how a proxy server uses this preference indication. - -10.2.2 Removing Bindings - - Registrations are soft state and expire unless refreshed, but can - also be explicitly removed. A client can attempt to influence the - expiration interval selected by the registrar as described in Section - 10.2.1. A UA requests the immediate removal of a binding by - specifying an expiration interval of "0" for that contact address in - a REGISTER request. UAs SHOULD support this mechanism so that - bindings can be removed before their expiration interval has passed. - - The REGISTER-specific Contact header field value of "*" applies to - all registrations, but it MUST NOT be used unless the Expires header - field is present with a value of "0". - - Use of the "*" Contact header field value allows a registering UA - to remove all bindings associated with an address-of-record - without knowing their precise values. - -10.2.3 Fetching Bindings - - A success response to any REGISTER request contains the complete list - of existing bindings, regardless of whether the request contained a - Contact header field. If no Contact header field is present in a - REGISTER request, the list of bindings is left unchanged. - -10.2.4 Refreshing Bindings - - Each UA is responsible for refreshing the bindings that it has - previously established. A UA SHOULD NOT refresh bindings set up by - other UAs. - - - - - - -Rosenberg, et. al. Standards Track [Page 61] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The 200 (OK) response from the registrar contains a list of Contact - fields enumerating all current bindings. The UA compares each - contact address to see if it created the contact address, using - comparison rules in Section 19.1.4. If so, it updates the expiration - time interval according to the expires parameter or, if absent, the - Expires field value. The UA then issues a REGISTER request for each - of its bindings before the expiration interval has elapsed. It MAY - combine several updates into one REGISTER request. - - A UA SHOULD use the same Call-ID for all registrations during a - single boot cycle. Registration refreshes SHOULD be sent to the same - network address as the original registration, unless redirected. - -10.2.5 Setting the Internal Clock - - If the response for a REGISTER request contains a Date header field, - the client MAY use this header field to learn the current time in - order to set any internal clocks. - -10.2.6 Discovering a Registrar - - UAs can use three ways to determine the address to which to send - registrations: by configuration, using the address-of-record, and - multicast. A UA can be configured, in ways beyond the scope of this - specification, with a registrar address. If there is no configured - registrar address, the UA SHOULD use the host part of the address- - of-record as the Request-URI and address the request there, using the - normal SIP server location mechanisms [4]. For example, the UA for - the user "sip:carol@chicago.com" addresses the REGISTER request to - "sip:chicago.com". - - Finally, a UA can be configured to use multicast. Multicast - registrations are addressed to the well-known "all SIP servers" - multicast address "sip.mcast.net" (224.0.1.75 for IPv4). No well- - known IPv6 multicast address has been allocated; such an allocation - will be documented separately when needed. SIP UAs MAY listen to - that address and use it to become aware of the location of other - local users (see [33]); however, they do not respond to the request. - - Multicast registration may be inappropriate in some environments, - for example, if multiple businesses share the same local area - network. - -10.2.7 Transmitting a Request - - Once the REGISTER method has been constructed, and the destination of - the message identified, UACs follow the procedures described in - Section 8.1.2 to hand off the REGISTER to the transaction layer. - - - -Rosenberg, et. al. Standards Track [Page 62] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If the transaction layer returns a timeout error because the REGISTER - yielded no response, the UAC SHOULD NOT immediately re-attempt a - registration to the same registrar. - - An immediate re-attempt is likely to also timeout. Waiting some - reasonable time interval for the conditions causing the timeout to - be corrected reduces unnecessary load on the network. No specific - interval is mandated. - -10.2.8 Error Responses - - If a UA receives a 423 (Interval Too Brief) response, it MAY retry - the registration after making the expiration interval of all contact - addresses in the REGISTER request equal to or greater than the - expiration interval within the Min-Expires header field of the 423 - (Interval Too Brief) response. - -10.3 Processing REGISTER Requests - - A registrar is a UAS that responds to REGISTER requests and maintains - a list of bindings that are accessible to proxy servers and redirect - servers within its administrative domain. A registrar handles - requests according to Section 8.2 and Section 17.2, but it accepts - only REGISTER requests. A registrar MUST not generate 6xx responses. - - A registrar MAY redirect REGISTER requests as appropriate. One - common usage would be for a registrar listening on a multicast - interface to redirect multicast REGISTER requests to its own unicast - interface with a 302 (Moved Temporarily) response. - - Registrars MUST ignore the Record-Route header field if it is - included in a REGISTER request. Registrars MUST NOT include a - Record-Route header field in any response to a REGISTER request. - - A registrar might receive a request that traversed a proxy which - treats REGISTER as an unknown request and which added a Record- - Route header field value. - - A registrar has to know (for example, through configuration) the set - of domain(s) for which it maintains bindings. REGISTER requests MUST - be processed by a registrar in the order that they are received. - REGISTER requests MUST also be processed atomically, meaning that a - particular REGISTER request is either processed completely or not at - all. Each REGISTER message MUST be processed independently of any - other registration or binding changes. - - - - - - -Rosenberg, et. al. Standards Track [Page 63] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - When receiving a REGISTER request, a registrar follows these steps: - - 1. The registrar inspects the Request-URI to determine whether it - has access to bindings for the domain identified in the - Request-URI. If not, and if the server also acts as a proxy - server, the server SHOULD forward the request to the addressed - domain, following the general behavior for proxying messages - described in Section 16. - - 2. To guarantee that the registrar supports any necessary - extensions, the registrar MUST process the Require header field - values as described for UASs in Section 8.2.2. - - 3. A registrar SHOULD authenticate the UAC. Mechanisms for the - authentication of SIP user agents are described in Section 22. - Registration behavior in no way overrides the generic - authentication framework for SIP. If no authentication - mechanism is available, the registrar MAY take the From address - as the asserted identity of the originator of the request. - - 4. The registrar SHOULD determine if the authenticated user is - authorized to modify registrations for this address-of-record. - For example, a registrar might consult an authorization - database that maps user names to a list of addresses-of-record - for which that user has authorization to modify bindings. If - the authenticated user is not authorized to modify bindings, - the registrar MUST return a 403 (Forbidden) and skip the - remaining steps. - - In architectures that support third-party registration, one - entity may be responsible for updating the registrations - associated with multiple addresses-of-record. - - 5. The registrar extracts the address-of-record from the To header - field of the request. If the address-of-record is not valid - for the domain in the Request-URI, the registrar MUST send a - 404 (Not Found) response and skip the remaining steps. The URI - MUST then be converted to a canonical form. To do that, all - URI parameters MUST be removed (including the user-param), and - any escaped characters MUST be converted to their unescaped - form. The result serves as an index into the list of bindings. - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 64] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 6. The registrar checks whether the request contains the Contact - header field. If not, it skips to the last step. If the - Contact header field is present, the registrar checks if there - is one Contact field value that contains the special value "*" - and an Expires field. If the request has additional Contact - fields or an expiration time other than zero, the request is - invalid, and the server MUST return a 400 (Invalid Request) and - skip the remaining steps. If not, the registrar checks whether - the Call-ID agrees with the value stored for each binding. If - not, it MUST remove the binding. If it does agree, it MUST - remove the binding only if the CSeq in the request is higher - than the value stored for that binding. Otherwise, the update - MUST be aborted and the request fails. - - 7. The registrar now processes each contact address in the Contact - header field in turn. For each address, it determines the - expiration interval as follows: - - - If the field value has an "expires" parameter, that value - MUST be taken as the requested expiration. - - - If there is no such parameter, but the request has an - Expires header field, that value MUST be taken as the - requested expiration. - - - If there is neither, a locally-configured default value MUST - be taken as the requested expiration. - - The registrar MAY choose an expiration less than the requested - expiration interval. If and only if the requested expiration - interval is greater than zero AND smaller than one hour AND - less than a registrar-configured minimum, the registrar MAY - reject the registration with a response of 423 (Interval Too - Brief). This response MUST contain a Min-Expires header field - that states the minimum expiration interval the registrar is - willing to honor. It then skips the remaining steps. - - Allowing the registrar to set the registration interval - protects it against excessively frequent registration refreshes - while limiting the state that it needs to maintain and - decreasing the likelihood of registrations going stale. The - expiration interval of a registration is frequently used in the - creation of services. An example is a follow-me service, where - the user may only be available at a terminal for a brief - period. Therefore, registrars should accept brief - registrations; a request should only be rejected if the - interval is so short that the refreshes would degrade registrar - performance. - - - -Rosenberg, et. al. Standards Track [Page 65] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - For each address, the registrar then searches the list of - current bindings using the URI comparison rules. If the - binding does not exist, it is tentatively added. If the - binding does exist, the registrar checks the Call-ID value. If - the Call-ID value in the existing binding differs from the - Call-ID value in the request, the binding MUST be removed if - the expiration time is zero and updated otherwise. If they are - the same, the registrar compares the CSeq value. If the value - is higher than that of the existing binding, it MUST update or - remove the binding as above. If not, the update MUST be - aborted and the request fails. - - This algorithm ensures that out-of-order requests from the same - UA are ignored. - - Each binding record records the Call-ID and CSeq values from - the request. - - The binding updates MUST be committed (that is, made visible to - the proxy or redirect server) if and only if all binding - updates and additions succeed. If any one of them fails (for - example, because the back-end database commit failed), the - request MUST fail with a 500 (Server Error) response and all - tentative binding updates MUST be removed. - - 8. The registrar returns a 200 (OK) response. The response MUST - contain Contact header field values enumerating all current - bindings. Each Contact value MUST feature an "expires" - parameter indicating its expiration interval chosen by the - registrar. The response SHOULD include a Date header field. - -11 Querying for Capabilities - - The SIP method OPTIONS allows a UA to query another UA or a proxy - server as to its capabilities. This allows a client to discover - information about the supported methods, content types, extensions, - codecs, etc. without "ringing" the other party. For example, before - a client inserts a Require header field into an INVITE listing an - option that it is not certain the destination UAS supports, the - client can query the destination UAS with an OPTIONS to see if this - option is returned in a Supported header field. All UAs MUST support - the OPTIONS method. - - The target of the OPTIONS request is identified by the Request-URI, - which could identify another UA or a SIP server. If the OPTIONS is - addressed to a proxy server, the Request-URI is set without a user - part, similar to the way a Request-URI is set for a REGISTER request. - - - - -Rosenberg, et. al. Standards Track [Page 66] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Alternatively, a server receiving an OPTIONS request with a Max- - Forwards header field value of 0 MAY respond to the request - regardless of the Request-URI. - - This behavior is common with HTTP/1.1. This behavior can be used - as a "traceroute" functionality to check the capabilities of - individual hop servers by sending a series of OPTIONS requests - with incremented Max-Forwards values. - - As is the case for general UA behavior, the transaction layer can - return a timeout error if the OPTIONS yields no response. This may - indicate that the target is unreachable and hence unavailable. - - An OPTIONS request MAY be sent as part of an established dialog to - query the peer on capabilities that may be utilized later in the - dialog. - -11.1 Construction of OPTIONS Request - - An OPTIONS request is constructed using the standard rules for a SIP - request as discussed in Section 8.1.1. - - A Contact header field MAY be present in an OPTIONS. - - An Accept header field SHOULD be included to indicate the type of - message body the UAC wishes to receive in the response. Typically, - this is set to a format that is used to describe the media - capabilities of a UA, such as SDP (application/sdp). - - The response to an OPTIONS request is assumed to be scoped to the - Request-URI in the original request. However, only when an OPTIONS - is sent as part of an established dialog is it guaranteed that future - requests will be received by the server that generated the OPTIONS - response. - - Example OPTIONS request: - - OPTIONS sip:carol@chicago.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKhjhs8ass877 - Max-Forwards: 70 - To: - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710 - CSeq: 63104 OPTIONS - Contact: - Accept: application/sdp - Content-Length: 0 - - - - -Rosenberg, et. al. Standards Track [Page 67] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -11.2 Processing of OPTIONS Request - - The response to an OPTIONS is constructed using the standard rules - for a SIP response as discussed in Section 8.2.6. The response code - chosen MUST be the same that would have been chosen had the request - been an INVITE. That is, a 200 (OK) would be returned if the UAS is - ready to accept a call, a 486 (Busy Here) would be returned if the - UAS is busy, etc. This allows an OPTIONS request to be used to - determine the basic state of a UAS, which can be an indication of - whether the UAS will accept an INVITE request. - - An OPTIONS request received within a dialog generates a 200 (OK) - response that is identical to one constructed outside a dialog and - does not have any impact on the dialog. - - This use of OPTIONS has limitations due to the differences in proxy - handling of OPTIONS and INVITE requests. While a forked INVITE can - result in multiple 200 (OK) responses being returned, a forked - OPTIONS will only result in a single 200 (OK) response, since it is - treated by proxies using the non-INVITE handling. See Section 16.7 - for the normative details. - - If the response to an OPTIONS is generated by a proxy server, the - proxy returns a 200 (OK), listing the capabilities of the server. - The response does not contain a message body. - - Allow, Accept, Accept-Encoding, Accept-Language, and Supported header - fields SHOULD be present in a 200 (OK) response to an OPTIONS - request. If the response is generated by a proxy, the Allow header - field SHOULD be omitted as it is ambiguous since a proxy is method - agnostic. Contact header fields MAY be present in a 200 (OK) - response and have the same semantics as in a 3xx response. That is, - they may list a set of alternative names and methods of reaching the - user. A Warning header field MAY be present. - - A message body MAY be sent, the type of which is determined by the - Accept header field in the OPTIONS request (application/sdp is the - default if the Accept header field is not present). If the types - include one that can describe media capabilities, the UAS SHOULD - include a body in the response for that purpose. Details on the - construction of such a body in the case of application/sdp are - described in [13]. - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 68] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example OPTIONS response generated by a UAS (corresponding to the - request in Section 11.1): - - SIP/2.0 200 OK - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKhjhs8ass877 - ;received=192.0.2.4 - To: ;tag=93810874 - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710 - CSeq: 63104 OPTIONS - Contact: - Contact: - Allow: INVITE, ACK, CANCEL, OPTIONS, BYE - Accept: application/sdp - Accept-Encoding: gzip - Accept-Language: en - Supported: foo - Content-Type: application/sdp - Content-Length: 274 - - (SDP not shown) - -12 Dialogs - - A key concept for a user agent is that of a dialog. A dialog - represents a peer-to-peer SIP relationship between two user agents - that persists for some time. The dialog facilitates sequencing of - messages between the user agents and proper routing of requests - between both of them. The dialog represents a context in which to - interpret SIP messages. Section 8 discussed method independent UA - processing for requests and responses outside of a dialog. This - section discusses how those requests and responses are used to - construct a dialog, and then how subsequent requests and responses - are sent within a dialog. - - A dialog is identified at each UA with a dialog ID, which consists of - a Call-ID value, a local tag and a remote tag. The dialog ID at each - UA involved in the dialog is not the same. Specifically, the local - tag at one UA is identical to the remote tag at the peer UA. The - tags are opaque tokens that facilitate the generation of unique - dialog IDs. - - A dialog ID is also associated with all responses and with any - request that contains a tag in the To field. The rules for computing - the dialog ID of a message depend on whether the SIP element is a UAC - or UAS. For a UAC, the Call-ID value of the dialog ID is set to the - Call-ID of the message, the remote tag is set to the tag in the To - field of the message, and the local tag is set to the tag in the From - - - -Rosenberg, et. al. Standards Track [Page 69] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - field of the message (these rules apply to both requests and - responses). As one would expect for a UAS, the Call-ID value of the - dialog ID is set to the Call-ID of the message, the remote tag is set - to the tag in the From field of the message, and the local tag is set - to the tag in the To field of the message. - - A dialog contains certain pieces of state needed for further message - transmissions within the dialog. This state consists of the dialog - ID, a local sequence number (used to order requests from the UA to - its peer), a remote sequence number (used to order requests from its - peer to the UA), a local URI, a remote URI, remote target, a boolean - flag called "secure", and a route set, which is an ordered list of - URIs. The route set is the list of servers that need to be traversed - to send a request to the peer. A dialog can also be in the "early" - state, which occurs when it is created with a provisional response, - and then transition to the "confirmed" state when a 2xx final - response arrives. For other responses, or if no response arrives at - all on that dialog, the early dialog terminates. - -12.1 Creation of a Dialog - - Dialogs are created through the generation of non-failure responses - to requests with specific methods. Within this specification, only - 2xx and 101-199 responses with a To tag, where the request was - INVITE, will establish a dialog. A dialog established by a non-final - response to a request is in the "early" state and it is called an - early dialog. Extensions MAY define other means for creating - dialogs. Section 13 gives more details that are specific to the - INVITE method. Here, we describe the process for creation of dialog - state that is not dependent on the method. - - UAs MUST assign values to the dialog ID components as described - below. - -12.1.1 UAS behavior - - When a UAS responds to a request with a response that establishes a - dialog (such as a 2xx to INVITE), the UAS MUST copy all Record-Route - header field values from the request into the response (including the - URIs, URI parameters, and any Record-Route header field parameters, - whether they are known or unknown to the UAS) and MUST maintain the - order of those values. The UAS MUST add a Contact header field to - the response. The Contact header field contains an address where the - UAS would like to be contacted for subsequent requests in the dialog - (which includes the ACK for a 2xx response in the case of an INVITE). - Generally, the host portion of this URI is the IP address or FQDN of - the host. The URI provided in the Contact header field MUST be a SIP - or SIPS URI. If the request that initiated the dialog contained a - - - -Rosenberg, et. al. Standards Track [Page 70] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - SIPS URI in the Request-URI or in the top Record-Route header field - value, if there was any, or the Contact header field if there was no - Record-Route header field, the Contact header field in the response - MUST be a SIPS URI. The URI SHOULD have global scope (that is, the - same URI can be used in messages outside this dialog). The same way, - the scope of the URI in the Contact header field of the INVITE is not - limited to this dialog either. It can therefore be used in messages - to the UAC even outside this dialog. - - The UAS then constructs the state of the dialog. This state MUST be - maintained for the duration of the dialog. - - If the request arrived over TLS, and the Request-URI contained a SIPS - URI, the "secure" flag is set to TRUE. - - The route set MUST be set to the list of URIs in the Record-Route - header field from the request, taken in order and preserving all URI - parameters. If no Record-Route header field is present in the - request, the route set MUST be set to the empty set. This route set, - even if empty, overrides any pre-existing route set for future - requests in this dialog. The remote target MUST be set to the URI - from the Contact header field of the request. - - The remote sequence number MUST be set to the value of the sequence - number in the CSeq header field of the request. The local sequence - number MUST be empty. The call identifier component of the dialog ID - MUST be set to the value of the Call-ID in the request. The local - tag component of the dialog ID MUST be set to the tag in the To field - in the response to the request (which always includes a tag), and the - remote tag component of the dialog ID MUST be set to the tag from the - From field in the request. A UAS MUST be prepared to receive a - request without a tag in the From field, in which case the tag is - considered to have a value of null. - - This is to maintain backwards compatibility with RFC 2543, which - did not mandate From tags. - - The remote URI MUST be set to the URI in the From field, and the - local URI MUST be set to the URI in the To field. - -12.1.2 UAC Behavior - - When a UAC sends a request that can establish a dialog (such as an - INVITE) it MUST provide a SIP or SIPS URI with global scope (i.e., - the same SIP URI can be used in messages outside this dialog) in the - Contact header field of the request. If the request has a Request- - URI or a topmost Route header field value with a SIPS URI, the - Contact header field MUST contain a SIPS URI. - - - -Rosenberg, et. al. Standards Track [Page 71] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - When a UAC receives a response that establishes a dialog, it - constructs the state of the dialog. This state MUST be maintained - for the duration of the dialog. - - If the request was sent over TLS, and the Request-URI contained a - SIPS URI, the "secure" flag is set to TRUE. - - The route set MUST be set to the list of URIs in the Record-Route - header field from the response, taken in reverse order and preserving - all URI parameters. If no Record-Route header field is present in - the response, the route set MUST be set to the empty set. This route - set, even if empty, overrides any pre-existing route set for future - requests in this dialog. The remote target MUST be set to the URI - from the Contact header field of the response. - - The local sequence number MUST be set to the value of the sequence - number in the CSeq header field of the request. The remote sequence - number MUST be empty (it is established when the remote UA sends a - request within the dialog). The call identifier component of the - dialog ID MUST be set to the value of the Call-ID in the request. - The local tag component of the dialog ID MUST be set to the tag in - the From field in the request, and the remote tag component of the - dialog ID MUST be set to the tag in the To field of the response. A - UAC MUST be prepared to receive a response without a tag in the To - field, in which case the tag is considered to have a value of null. - - This is to maintain backwards compatibility with RFC 2543, which - did not mandate To tags. - - The remote URI MUST be set to the URI in the To field, and the local - URI MUST be set to the URI in the From field. - -12.2 Requests within a Dialog - - Once a dialog has been established between two UAs, either of them - MAY initiate new transactions as needed within the dialog. The UA - sending the request will take the UAC role for the transaction. The - UA receiving the request will take the UAS role. Note that these may - be different roles than the UAs held during the transaction that - established the dialog. - - Requests within a dialog MAY contain Record-Route and Contact header - fields. However, these requests do not cause the dialog's route set - to be modified, although they may modify the remote target URI. - Specifically, requests that are not target refresh requests do not - modify the dialog's remote target URI, and requests that are target - refresh requests do. For dialogs that have been established with an - - - - -Rosenberg, et. al. Standards Track [Page 72] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - INVITE, the only target refresh request defined is re-INVITE (see - Section 14). Other extensions may define different target refresh - requests for dialogs established in other ways. - - Note that an ACK is NOT a target refresh request. - - Target refresh requests only update the dialog's remote target URI, - and not the route set formed from the Record-Route. Updating the - latter would introduce severe backwards compatibility problems with - RFC 2543-compliant systems. - -12.2.1 UAC Behavior - -12.2.1.1 Generating the Request - - A request within a dialog is constructed by using many of the - components of the state stored as part of the dialog. - - The URI in the To field of the request MUST be set to the remote URI - from the dialog state. The tag in the To header field of the request - MUST be set to the remote tag of the dialog ID. The From URI of the - request MUST be set to the local URI from the dialog state. The tag - in the From header field of the request MUST be set to the local tag - of the dialog ID. If the value of the remote or local tags is null, - the tag parameter MUST be omitted from the To or From header fields, - respectively. - - Usage of the URI from the To and From fields in the original - request within subsequent requests is done for backwards - compatibility with RFC 2543, which used the URI for dialog - identification. In this specification, only the tags are used for - dialog identification. It is expected that mandatory reflection - of the original To and From URI in mid-dialog requests will be - deprecated in a subsequent revision of this specification. - - The Call-ID of the request MUST be set to the Call-ID of the dialog. - Requests within a dialog MUST contain strictly monotonically - increasing and contiguous CSeq sequence numbers (increasing-by-one) - in each direction (excepting ACK and CANCEL of course, whose numbers - equal the requests being acknowledged or cancelled). Therefore, if - the local sequence number is not empty, the value of the local - sequence number MUST be incremented by one, and this value MUST be - placed into the CSeq header field. If the local sequence number is - empty, an initial value MUST be chosen using the guidelines of - Section 8.1.1.5. The method field in the CSeq header field value - MUST match the method of the request. - - - - - -Rosenberg, et. al. Standards Track [Page 73] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - With a length of 32 bits, a client could generate, within a single - call, one request a second for about 136 years before needing to - wrap around. The initial value of the sequence number is chosen - so that subsequent requests within the same call will not wrap - around. A non-zero initial value allows clients to use a time- - based initial sequence number. A client could, for example, - choose the 31 most significant bits of a 32-bit second clock as an - initial sequence number. - - The UAC uses the remote target and route set to build the Request-URI - and Route header field of the request. - - If the route set is empty, the UAC MUST place the remote target URI - into the Request-URI. The UAC MUST NOT add a Route header field to - the request. - - If the route set is not empty, and the first URI in the route set - contains the lr parameter (see Section 19.1.1), the UAC MUST place - the remote target URI into the Request-URI and MUST include a Route - header field containing the route set values in order, including all - parameters. - - If the route set is not empty, and its first URI does not contain the - lr parameter, the UAC MUST place the first URI from the route set - into the Request-URI, stripping any parameters that are not allowed - in a Request-URI. The UAC MUST add a Route header field containing - the remainder of the route set values in order, including all - parameters. The UAC MUST then place the remote target URI into the - Route header field as the last value. - - For example, if the remote target is sip:user@remoteua and the route - set contains: - - ,,, - - The request will be formed with the following Request-URI and Route - header field: - - METHOD sip:proxy1 - Route: ,,, - - If the first URI of the route set does not contain the lr - parameter, the proxy indicated does not understand the routing - mechanisms described in this document and will act as specified in - RFC 2543, replacing the Request-URI with the first Route header - field value it receives while forwarding the message. Placing the - Request-URI at the end of the Route header field preserves the - - - - -Rosenberg, et. al. Standards Track [Page 74] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - information in that Request-URI across the strict router (it will - be returned to the Request-URI when the request reaches a loose- - router). - - A UAC SHOULD include a Contact header field in any target refresh - requests within a dialog, and unless there is a need to change it, - the URI SHOULD be the same as used in previous requests within the - dialog. If the "secure" flag is true, that URI MUST be a SIPS URI. - As discussed in Section 12.2.2, a Contact header field in a target - refresh request updates the remote target URI. This allows a UA to - provide a new contact address, should its address change during the - duration of the dialog. - - However, requests that are not target refresh requests do not affect - the remote target URI for the dialog. - - The rest of the request is formed as described in Section 8.1.1. - - Once the request has been constructed, the address of the server is - computed and the request is sent, using the same procedures for - requests outside of a dialog (Section 8.1.2). - - The procedures in Section 8.1.2 will normally result in the - request being sent to the address indicated by the topmost Route - header field value or the Request-URI if no Route header field is - present. Subject to certain restrictions, they allow the request - to be sent to an alternate address (such as a default outbound - proxy not represented in the route set). - -12.2.1.2 Processing the Responses - - The UAC will receive responses to the request from the transaction - layer. If the client transaction returns a timeout, this is treated - as a 408 (Request Timeout) response. - - The behavior of a UAC that receives a 3xx response for a request sent - within a dialog is the same as if the request had been sent outside a - dialog. This behavior is described in Section 8.1.3.4. - - Note, however, that when the UAC tries alternative locations, it - still uses the route set for the dialog to build the Route header - of the request. - - When a UAC receives a 2xx response to a target refresh request, it - MUST replace the dialog's remote target URI with the URI from the - Contact header field in that response, if present. - - - - - -Rosenberg, et. al. Standards Track [Page 75] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If the response for a request within a dialog is a 481 - (Call/Transaction Does Not Exist) or a 408 (Request Timeout), the UAC - SHOULD terminate the dialog. A UAC SHOULD also terminate a dialog if - no response at all is received for the request (the client - transaction would inform the TU about the timeout.) - - For INVITE initiated dialogs, terminating the dialog consists of - sending a BYE. - -12.2.2 UAS Behavior - - Requests sent within a dialog, as any other requests, are atomic. If - a particular request is accepted by the UAS, all the state changes - associated with it are performed. If the request is rejected, none - of the state changes are performed. - - Note that some requests, such as INVITEs, affect several pieces of - state. - - The UAS will receive the request from the transaction layer. If the - request has a tag in the To header field, the UAS core computes the - dialog identifier corresponding to the request and compares it with - existing dialogs. If there is a match, this is a mid-dialog request. - In that case, the UAS first applies the same processing rules for - requests outside of a dialog, discussed in Section 8.2. - - If the request has a tag in the To header field, but the dialog - identifier does not match any existing dialogs, the UAS may have - crashed and restarted, or it may have received a request for a - different (possibly failed) UAS (the UASs can construct the To tags - so that a UAS can identify that the tag was for a UAS for which it is - providing recovery). Another possibility is that the incoming - request has been simply misrouted. Based on the To tag, the UAS MAY - either accept or reject the request. Accepting the request for - acceptable To tags provides robustness, so that dialogs can persist - even through crashes. UAs wishing to support this capability must - take into consideration some issues such as choosing monotonically - increasing CSeq sequence numbers even across reboots, reconstructing - the route set, and accepting out-of-range RTP timestamps and sequence - numbers. - - If the UAS wishes to reject the request because it does not wish to - recreate the dialog, it MUST respond to the request with a 481 - (Call/Transaction Does Not Exist) status code and pass that to the - server transaction. - - - - - - -Rosenberg, et. al. Standards Track [Page 76] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Requests that do not change in any way the state of a dialog may be - received within a dialog (for example, an OPTIONS request). They are - processed as if they had been received outside the dialog. - - If the remote sequence number is empty, it MUST be set to the value - of the sequence number in the CSeq header field value in the request. - If the remote sequence number was not empty, but the sequence number - of the request is lower than the remote sequence number, the request - is out of order and MUST be rejected with a 500 (Server Internal - Error) response. If the remote sequence number was not empty, and - the sequence number of the request is greater than the remote - sequence number, the request is in order. It is possible for the - CSeq sequence number to be higher than the remote sequence number by - more than one. This is not an error condition, and a UAS SHOULD be - prepared to receive and process requests with CSeq values more than - one higher than the previous received request. The UAS MUST then set - the remote sequence number to the value of the sequence number in the - CSeq header field value in the request. - - If a proxy challenges a request generated by the UAC, the UAC has - to resubmit the request with credentials. The resubmitted request - will have a new CSeq number. The UAS will never see the first - request, and thus, it will notice a gap in the CSeq number space. - Such a gap does not represent any error condition. - - When a UAS receives a target refresh request, it MUST replace the - dialog's remote target URI with the URI from the Contact header field - in that request, if present. - -12.3 Termination of a Dialog - - Independent of the method, if a request outside of a dialog generates - a non-2xx final response, any early dialogs created through - provisional responses to that request are terminated. The mechanism - for terminating confirmed dialogs is method specific. In this - specification, the BYE method terminates a session and the dialog - associated with it. See Section 15 for details. - -13 Initiating a Session - -13.1 Overview - - When a user agent client desires to initiate a session (for example, - audio, video, or a game), it formulates an INVITE request. The - INVITE request asks a server to establish a session. This request - may be forwarded by proxies, eventually arriving at one or more UAS - that can potentially accept the invitation. These UASs will - frequently need to query the user about whether to accept the - - - -Rosenberg, et. al. Standards Track [Page 77] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - invitation. After some time, those UASs can accept the invitation - (meaning the session is to be established) by sending a 2xx response. - If the invitation is not accepted, a 3xx, 4xx, 5xx or 6xx response is - sent, depending on the reason for the rejection. Before sending a - final response, the UAS can also send provisional responses (1xx) to - advise the UAC of progress in contacting the called user. - - After possibly receiving one or more provisional responses, the UAC - will get one or more 2xx responses or one non-2xx final response. - Because of the protracted amount of time it can take to receive final - responses to INVITE, the reliability mechanisms for INVITE - transactions differ from those of other requests (like OPTIONS). - Once it receives a final response, the UAC needs to send an ACK for - every final response it receives. The procedure for sending this ACK - depends on the type of response. For final responses between 300 and - 699, the ACK processing is done in the transaction layer and follows - one set of rules (See Section 17). For 2xx responses, the ACK is - generated by the UAC core. - - A 2xx response to an INVITE establishes a session, and it also - creates a dialog between the UA that issued the INVITE and the UA - that generated the 2xx response. Therefore, when multiple 2xx - responses are received from different remote UAs (because the INVITE - forked), each 2xx establishes a different dialog. All these dialogs - are part of the same call. - - This section provides details on the establishment of a session using - INVITE. A UA that supports INVITE MUST also support ACK, CANCEL and - BYE. - -13.2 UAC Processing - -13.2.1 Creating the Initial INVITE - - Since the initial INVITE represents a request outside of a dialog, - its construction follows the procedures of Section 8.1.1. Additional - processing is required for the specific case of INVITE. - - An Allow header field (Section 20.5) SHOULD be present in the INVITE. - It indicates what methods can be invoked within a dialog, on the UA - sending the INVITE, for the duration of the dialog. For example, a - UA capable of receiving INFO requests within a dialog [34] SHOULD - include an Allow header field listing the INFO method. - - A Supported header field (Section 20.37) SHOULD be present in the - INVITE. It enumerates all the extensions understood by the UAC. - - - - - -Rosenberg, et. al. Standards Track [Page 78] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - An Accept (Section 20.1) header field MAY be present in the INVITE. - It indicates which Content-Types are acceptable to the UA, in both - the response received by it, and in any subsequent requests sent to - it within dialogs established by the INVITE. The Accept header field - is especially useful for indicating support of various session - description formats. - - The UAC MAY add an Expires header field (Section 20.19) to limit the - validity of the invitation. If the time indicated in the Expires - header field is reached and no final answer for the INVITE has been - received, the UAC core SHOULD generate a CANCEL request for the - INVITE, as per Section 9. - - A UAC MAY also find it useful to add, among others, Subject (Section - 20.36), Organization (Section 20.25) and User-Agent (Section 20.41) - header fields. They all contain information related to the INVITE. - - The UAC MAY choose to add a message body to the INVITE. Section - 8.1.1.10 deals with how to construct the header fields -- Content- - Type among others -- needed to describe the message body. - - There are special rules for message bodies that contain a session - description - their corresponding Content-Disposition is "session". - SIP uses an offer/answer model where one UA sends a session - description, called the offer, which contains a proposed description - of the session. The offer indicates the desired communications means - (audio, video, games), parameters of those means (such as codec - types) and addresses for receiving media from the answerer. The - other UA responds with another session description, called the - answer, which indicates which communications means are accepted, the - parameters that apply to those means, and addresses for receiving - media from the offerer. An offer/answer exchange is within the - context of a dialog, so that if a SIP INVITE results in multiple - dialogs, each is a separate offer/answer exchange. The offer/answer - model defines restrictions on when offers and answers can be made - (for example, you cannot make a new offer while one is in progress). - This results in restrictions on where the offers and answers can - appear in SIP messages. In this specification, offers and answers - can only appear in INVITE requests and responses, and ACK. The usage - of offers and answers is further restricted. For the initial INVITE - transaction, the rules are: - - o The initial offer MUST be in either an INVITE or, if not there, - in the first reliable non-failure message from the UAS back to - the UAC. In this specification, that is the final 2xx - response. - - - - - -Rosenberg, et. al. Standards Track [Page 79] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o If the initial offer is in an INVITE, the answer MUST be in a - reliable non-failure message from UAS back to UAC which is - correlated to that INVITE. For this specification, that is - only the final 2xx response to that INVITE. That same exact - answer MAY also be placed in any provisional responses sent - prior to the answer. The UAC MUST treat the first session - description it receives as the answer, and MUST ignore any - session descriptions in subsequent responses to the initial - INVITE. - - o If the initial offer is in the first reliable non-failure - message from the UAS back to UAC, the answer MUST be in the - acknowledgement for that message (in this specification, ACK - for a 2xx response). - - o After having sent or received an answer to the first offer, the - UAC MAY generate subsequent offers in requests based on rules - specified for that method, but only if it has received answers - to any previous offers, and has not sent any offers to which it - hasn't gotten an answer. - - o Once the UAS has sent or received an answer to the initial - offer, it MUST NOT generate subsequent offers in any responses - to the initial INVITE. This means that a UAS based on this - specification alone can never generate subsequent offers until - completion of the initial transaction. - - Concretely, the above rules specify two exchanges for UAs compliant - to this specification alone - the offer is in the INVITE, and the - answer in the 2xx (and possibly in a 1xx as well, with the same - value), or the offer is in the 2xx, and the answer is in the ACK. - All user agents that support INVITE MUST support these two exchanges. - - The Session Description Protocol (SDP) (RFC 2327 [1]) MUST be - supported by all user agents as a means to describe sessions, and its - usage for constructing offers and answers MUST follow the procedures - defined in [13]. - - The restrictions of the offer-answer model just described only apply - to bodies whose Content-Disposition header field value is "session". - Therefore, it is possible that both the INVITE and the ACK contain a - body message (for example, the INVITE carries a photo (Content- - Disposition: render) and the ACK a session description (Content- - Disposition: session)). - - If the Content-Disposition header field is missing, bodies of - Content-Type application/sdp imply the disposition "session", while - other content types imply "render". - - - -Rosenberg, et. al. Standards Track [Page 80] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Once the INVITE has been created, the UAC follows the procedures - defined for sending requests outside of a dialog (Section 8). This - results in the construction of a client transaction that will - ultimately send the request and deliver responses to the UAC. - -13.2.2 Processing INVITE Responses - - Once the INVITE has been passed to the INVITE client transaction, the - UAC waits for responses for the INVITE. If the INVITE client - transaction returns a timeout rather than a response the TU acts as - if a 408 (Request Timeout) response had been received, as described - in Section 8.1.3. - -13.2.2.1 1xx Responses - - Zero, one or multiple provisional responses may arrive before one or - more final responses are received. Provisional responses for an - INVITE request can create "early dialogs". If a provisional response - has a tag in the To field, and if the dialog ID of the response does - not match an existing dialog, one is constructed using the procedures - defined in Section 12.1.2. - - The early dialog will only be needed if the UAC needs to send a - request to its peer within the dialog before the initial INVITE - transaction completes. Header fields present in a provisional - response are applicable as long as the dialog is in the early state - (for example, an Allow header field in a provisional response - contains the methods that can be used in the dialog while this is in - the early state). - -13.2.2.2 3xx Responses - - A 3xx response may contain one or more Contact header field values - providing new addresses where the callee might be reachable. - Depending on the status code of the 3xx response (see Section 21.3), - the UAC MAY choose to try those new addresses. - -13.2.2.3 4xx, 5xx and 6xx Responses - - A single non-2xx final response may be received for the INVITE. 4xx, - 5xx and 6xx responses may contain a Contact header field value - indicating the location where additional information about the error - can be found. Subsequent final responses (which would only arrive - under error conditions) MUST be ignored. - - All early dialogs are considered terminated upon reception of the - non-2xx final response. - - - - -Rosenberg, et. al. Standards Track [Page 81] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - After having received the non-2xx final response the UAC core - considers the INVITE transaction completed. The INVITE client - transaction handles the generation of ACKs for the response (see - Section 17). - -13.2.2.4 2xx Responses - - Multiple 2xx responses may arrive at the UAC for a single INVITE - request due to a forking proxy. Each response is distinguished by - the tag parameter in the To header field, and each represents a - distinct dialog, with a distinct dialog identifier. - - If the dialog identifier in the 2xx response matches the dialog - identifier of an existing dialog, the dialog MUST be transitioned to - the "confirmed" state, and the route set for the dialog MUST be - recomputed based on the 2xx response using the procedures of Section - 12.2.1.2. Otherwise, a new dialog in the "confirmed" state MUST be - constructed using the procedures of Section 12.1.2. - - Note that the only piece of state that is recomputed is the route - set. Other pieces of state such as the highest sequence numbers - (remote and local) sent within the dialog are not recomputed. The - route set only is recomputed for backwards compatibility. RFC - 2543 did not mandate mirroring of the Record-Route header field in - a 1xx, only 2xx. However, we cannot update the entire state of - the dialog, since mid-dialog requests may have been sent within - the early dialog, modifying the sequence numbers, for example. - - The UAC core MUST generate an ACK request for each 2xx received from - the transaction layer. The header fields of the ACK are constructed - in the same way as for any request sent within a dialog (see Section - 12) with the exception of the CSeq and the header fields related to - authentication. The sequence number of the CSeq header field MUST be - the same as the INVITE being acknowledged, but the CSeq method MUST - be ACK. The ACK MUST contain the same credentials as the INVITE. If - the 2xx contains an offer (based on the rules above), the ACK MUST - carry an answer in its body. If the offer in the 2xx response is not - acceptable, the UAC core MUST generate a valid answer in the ACK and - then send a BYE immediately. - - Once the ACK has been constructed, the procedures of [4] are used to - determine the destination address, port and transport. However, the - request is passed to the transport layer directly for transmission, - rather than a client transaction. This is because the UAC core - handles retransmissions of the ACK, not the transaction layer. The - ACK MUST be passed to the client transport every time a - retransmission of the 2xx final response that triggered the ACK - arrives. - - - -Rosenberg, et. al. Standards Track [Page 82] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The UAC core considers the INVITE transaction completed 64*T1 seconds - after the reception of the first 2xx response. At this point all the - early dialogs that have not transitioned to established dialogs are - terminated. Once the INVITE transaction is considered completed by - the UAC core, no more new 2xx responses are expected to arrive. - - If, after acknowledging any 2xx response to an INVITE, the UAC does - not want to continue with that dialog, then the UAC MUST terminate - the dialog by sending a BYE request as described in Section 15. - -13.3 UAS Processing - -13.3.1 Processing of the INVITE - - The UAS core will receive INVITE requests from the transaction layer. - It first performs the request processing procedures of Section 8.2, - which are applied for both requests inside and outside of a dialog. - - Assuming these processing states are completed without generating a - response, the UAS core performs the additional processing steps: - - 1. If the request is an INVITE that contains an Expires header - field, the UAS core sets a timer for the number of seconds - indicated in the header field value. When the timer fires, the - invitation is considered to be expired. If the invitation - expires before the UAS has generated a final response, a 487 - (Request Terminated) response SHOULD be generated. - - 2. If the request is a mid-dialog request, the method-independent - processing described in Section 12.2.2 is first applied. It - might also modify the session; Section 14 provides details. - - 3. If the request has a tag in the To header field but the dialog - identifier does not match any of the existing dialogs, the UAS - may have crashed and restarted, or may have received a request - for a different (possibly failed) UAS. Section 12.2.2 provides - guidelines to achieve a robust behavior under such a situation. - - Processing from here forward assumes that the INVITE is outside of a - dialog, and is thus for the purposes of establishing a new session. - - The INVITE may contain a session description, in which case the UAS - is being presented with an offer for that session. It is possible - that the user is already a participant in that session, even though - the INVITE is outside of a dialog. This can happen when a user is - invited to the same multicast conference by multiple other - participants. If desired, the UAS MAY use identifiers within the - session description to detect this duplication. For example, SDP - - - -Rosenberg, et. al. Standards Track [Page 83] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - contains a session id and version number in the origin (o) field. If - the user is already a member of the session, and the session - parameters contained in the session description have not changed, the - UAS MAY silently accept the INVITE (that is, send a 2xx response - without prompting the user). - - If the INVITE does not contain a session description, the UAS is - being asked to participate in a session, and the UAC has asked that - the UAS provide the offer of the session. It MUST provide the offer - in its first non-failure reliable message back to the UAC. In this - specification, that is a 2xx response to the INVITE. - - The UAS can indicate progress, accept, redirect, or reject the - invitation. In all of these cases, it formulates a response using - the procedures described in Section 8.2.6. - -13.3.1.1 Progress - - If the UAS is not able to answer the invitation immediately, it can - choose to indicate some kind of progress to the UAC (for example, an - indication that a phone is ringing). This is accomplished with a - provisional response between 101 and 199. These provisional - responses establish early dialogs and therefore follow the procedures - of Section 12.1.1 in addition to those of Section 8.2.6. A UAS MAY - send as many provisional responses as it likes. Each of these MUST - indicate the same dialog ID. However, these will not be delivered - reliably. - - If the UAS desires an extended period of time to answer the INVITE, - it will need to ask for an "extension" in order to prevent proxies - from canceling the transaction. A proxy has the option of canceling - a transaction when there is a gap of 3 minutes between responses in a - transaction. To prevent cancellation, the UAS MUST send a non-100 - provisional response at every minute, to handle the possibility of - lost provisional responses. - - An INVITE transaction can go on for extended durations when the - user is placed on hold, or when interworking with PSTN systems - which allow communications to take place without answering the - call. The latter is common in Interactive Voice Response (IVR) - systems. - -13.3.1.2 The INVITE is Redirected - - If the UAS decides to redirect the call, a 3xx response is sent. A - 300 (Multiple Choices), 301 (Moved Permanently) or 302 (Moved - Temporarily) response SHOULD contain a Contact header field - - - - -Rosenberg, et. al. Standards Track [Page 84] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - containing one or more URIs of new addresses to be tried. The - response is passed to the INVITE server transaction, which will deal - with its retransmissions. - -13.3.1.3 The INVITE is Rejected - - A common scenario occurs when the callee is currently not willing or - able to take additional calls at this end system. A 486 (Busy Here) - SHOULD be returned in such a scenario. If the UAS knows that no - other end system will be able to accept this call, a 600 (Busy - Everywhere) response SHOULD be sent instead. However, it is unlikely - that a UAS will be able to know this in general, and thus this - response will not usually be used. The response is passed to the - INVITE server transaction, which will deal with its retransmissions. - - A UAS rejecting an offer contained in an INVITE SHOULD return a 488 - (Not Acceptable Here) response. Such a response SHOULD include a - Warning header field value explaining why the offer was rejected. - -13.3.1.4 The INVITE is Accepted - - The UAS core generates a 2xx response. This response establishes a - dialog, and therefore follows the procedures of Section 12.1.1 in - addition to those of Section 8.2.6. - - A 2xx response to an INVITE SHOULD contain the Allow header field and - the Supported header field, and MAY contain the Accept header field. - Including these header fields allows the UAC to determine the - features and extensions supported by the UAS for the duration of the - call, without probing. - - If the INVITE request contained an offer, and the UAS had not yet - sent an answer, the 2xx MUST contain an answer. If the INVITE did - not contain an offer, the 2xx MUST contain an offer if the UAS had - not yet sent an offer. - - Once the response has been constructed, it is passed to the INVITE - server transaction. Note, however, that the INVITE server - transaction will be destroyed as soon as it receives this final - response and passes it to the transport. Therefore, it is necessary - to periodically pass the response directly to the transport until the - ACK arrives. The 2xx response is passed to the transport with an - interval that starts at T1 seconds and doubles for each - retransmission until it reaches T2 seconds (T1 and T2 are defined in - Section 17). Response retransmissions cease when an ACK request for - the response is received. This is independent of whatever transport - protocols are used to send the response. - - - - -Rosenberg, et. al. Standards Track [Page 85] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Since 2xx is retransmitted end-to-end, there may be hops between - UAS and UAC that are UDP. To ensure reliable delivery across - these hops, the response is retransmitted periodically even if the - transport at the UAS is reliable. - - If the server retransmits the 2xx response for 64*T1 seconds without - receiving an ACK, the dialog is confirmed, but the session SHOULD be - terminated. This is accomplished with a BYE, as described in Section - 15. - -14 Modifying an Existing Session - - A successful INVITE request (see Section 13) establishes both a - dialog between two user agents and a session using the offer-answer - model. Section 12 explains how to modify an existing dialog using a - target refresh request (for example, changing the remote target URI - of the dialog). This section describes how to modify the actual - session. This modification can involve changing addresses or ports, - adding a media stream, deleting a media stream, and so on. This is - accomplished by sending a new INVITE request within the same dialog - that established the session. An INVITE request sent within an - existing dialog is known as a re-INVITE. - - Note that a single re-INVITE can modify the dialog and the - parameters of the session at the same time. - - Either the caller or callee can modify an existing session. - - The behavior of a UA on detection of media failure is a matter of - local policy. However, automated generation of re-INVITE or BYE is - NOT RECOMMENDED to avoid flooding the network with traffic when there - is congestion. In any case, if these messages are sent - automatically, they SHOULD be sent after some randomized interval. - - Note that the paragraph above refers to automatically generated - BYEs and re-INVITEs. If the user hangs up upon media failure, the - UA would send a BYE request as usual. - -14.1 UAC Behavior - - The same offer-answer model that applies to session descriptions in - INVITEs (Section 13.2.1) applies to re-INVITEs. As a result, a UAC - that wants to add a media stream, for example, will create a new - offer that contains this media stream, and send that in an INVITE - request to its peer. It is important to note that the full - description of the session, not just the change, is sent. This - supports stateless session processing in various elements, and - supports failover and recovery capabilities. Of course, a UAC MAY - - - -Rosenberg, et. al. Standards Track [Page 86] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - send a re-INVITE with no session description, in which case the first - reliable non-failure response to the re-INVITE will contain the offer - (in this specification, that is a 2xx response). - - If the session description format has the capability for version - numbers, the offerer SHOULD indicate that the version of the session - description has changed. - - The To, From, Call-ID, CSeq, and Request-URI of a re-INVITE are set - following the same rules as for regular requests within an existing - dialog, described in Section 12. - - A UAC MAY choose not to add an Alert-Info header field or a body with - Content-Disposition "alert" to re-INVITEs because UASs do not - typically alert the user upon reception of a re-INVITE. - - Unlike an INVITE, which can fork, a re-INVITE will never fork, and - therefore, only ever generate a single final response. The reason a - re-INVITE will never fork is that the Request-URI identifies the - target as the UA instance it established the dialog with, rather than - identifying an address-of-record for the user. - - Note that a UAC MUST NOT initiate a new INVITE transaction within a - dialog while another INVITE transaction is in progress in either - direction. - - 1. If there is an ongoing INVITE client transaction, the TU MUST - wait until the transaction reaches the completed or terminated - state before initiating the new INVITE. - - 2. If there is an ongoing INVITE server transaction, the TU MUST - wait until the transaction reaches the confirmed or terminated - state before initiating the new INVITE. - - However, a UA MAY initiate a regular transaction while an INVITE - transaction is in progress. A UA MAY also initiate an INVITE - transaction while a regular transaction is in progress. - - If a UA receives a non-2xx final response to a re-INVITE, the session - parameters MUST remain unchanged, as if no re-INVITE had been issued. - Note that, as stated in Section 12.2.1.2, if the non-2xx final - response is a 481 (Call/Transaction Does Not Exist), or a 408 - (Request Timeout), or no response at all is received for the re- - INVITE (that is, a timeout is returned by the INVITE client - transaction), the UAC will terminate the dialog. - - - - - - -Rosenberg, et. al. Standards Track [Page 87] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If a UAC receives a 491 response to a re-INVITE, it SHOULD start a - timer with a value T chosen as follows: - - 1. If the UAC is the owner of the Call-ID of the dialog ID - (meaning it generated the value), T has a randomly chosen value - between 2.1 and 4 seconds in units of 10 ms. - - 2. If the UAC is not the owner of the Call-ID of the dialog ID, T - has a randomly chosen value of between 0 and 2 seconds in units - of 10 ms. - - When the timer fires, the UAC SHOULD attempt the re-INVITE once more, - if it still desires for that session modification to take place. For - example, if the call was already hung up with a BYE, the re-INVITE - would not take place. - - The rules for transmitting a re-INVITE and for generating an ACK for - a 2xx response to re-INVITE are the same as for the initial INVITE - (Section 13.2.1). - -14.2 UAS Behavior - - Section 13.3.1 describes the procedure for distinguishing incoming - re-INVITEs from incoming initial INVITEs and handling a re-INVITE for - an existing dialog. - - A UAS that receives a second INVITE before it sends the final - response to a first INVITE with a lower CSeq sequence number on the - same dialog MUST return a 500 (Server Internal Error) response to the - second INVITE and MUST include a Retry-After header field with a - randomly chosen value of between 0 and 10 seconds. - - A UAS that receives an INVITE on a dialog while an INVITE it had sent - on that dialog is in progress MUST return a 491 (Request Pending) - response to the received INVITE. - - If a UA receives a re-INVITE for an existing dialog, it MUST check - any version identifiers in the session description or, if there are - no version identifiers, the content of the session description to see - if it has changed. If the session description has changed, the UAS - MUST adjust the session parameters accordingly, possibly after asking - the user for confirmation. - - Versioning of the session description can be used to accommodate - the capabilities of new arrivals to a conference, add or delete - media, or change from a unicast to a multicast conference. - - - - - -Rosenberg, et. al. Standards Track [Page 88] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If the new session description is not acceptable, the UAS can reject - it by returning a 488 (Not Acceptable Here) response for the re- - INVITE. This response SHOULD include a Warning header field. - - If a UAS generates a 2xx response and never receives an ACK, it - SHOULD generate a BYE to terminate the dialog. - - A UAS MAY choose not to generate 180 (Ringing) responses for a re- - INVITE because UACs do not typically render this information to the - user. For the same reason, UASs MAY choose not to use an Alert-Info - header field or a body with Content-Disposition "alert" in responses - to a re-INVITE. - - A UAS providing an offer in a 2xx (because the INVITE did not contain - an offer) SHOULD construct the offer as if the UAS were making a - brand new call, subject to the constraints of sending an offer that - updates an existing session, as described in [13] in the case of SDP. - Specifically, this means that it SHOULD include as many media formats - and media types that the UA is willing to support. The UAS MUST - ensure that the session description overlaps with its previous - session description in media formats, transports, or other parameters - that require support from the peer. This is to avoid the need for - the peer to reject the session description. If, however, it is - unacceptable to the UAC, the UAC SHOULD generate an answer with a - valid session description, and then send a BYE to terminate the - session. - -15 Terminating a Session - - This section describes the procedures for terminating a session - established by SIP. The state of the session and the state of the - dialog are very closely related. When a session is initiated with an - INVITE, each 1xx or 2xx response from a distinct UAS creates a - dialog, and if that response completes the offer/answer exchange, it - also creates a session. As a result, each session is "associated" - with a single dialog - the one which resulted in its creation. If an - initial INVITE generates a non-2xx final response, that terminates - all sessions (if any) and all dialogs (if any) that were created - through responses to the request. By virtue of completing the - transaction, a non-2xx final response also prevents further sessions - from being created as a result of the INVITE. The BYE request is - used to terminate a specific session or attempted session. In this - case, the specific session is the one with the peer UA on the other - side of the dialog. When a BYE is received on a dialog, any session - associated with that dialog SHOULD terminate. A UA MUST NOT send a - BYE outside of a dialog. The caller's UA MAY send a BYE for either - confirmed or early dialogs, and the callee's UA MAY send a BYE on - confirmed dialogs, but MUST NOT send a BYE on early dialogs. - - - -Rosenberg, et. al. Standards Track [Page 89] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - However, the callee's UA MUST NOT send a BYE on a confirmed dialog - until it has received an ACK for its 2xx response or until the server - transaction times out. If no SIP extensions have defined other - application layer states associated with the dialog, the BYE also - terminates the dialog. - - The impact of a non-2xx final response to INVITE on dialogs and - sessions makes the use of CANCEL attractive. The CANCEL attempts to - force a non-2xx response to the INVITE (in particular, a 487). - Therefore, if a UAC wishes to give up on its call attempt entirely, - it can send a CANCEL. If the INVITE results in 2xx final response(s) - to the INVITE, this means that a UAS accepted the invitation while - the CANCEL was in progress. The UAC MAY continue with the sessions - established by any 2xx responses, or MAY terminate them with BYE. - - The notion of "hanging up" is not well defined within SIP. It is - specific to a particular, albeit common, user interface. - Typically, when the user hangs up, it indicates a desire to - terminate the attempt to establish a session, and to terminate any - sessions already created. For the caller's UA, this would imply a - CANCEL request if the initial INVITE has not generated a final - response, and a BYE to all confirmed dialogs after a final - response. For the callee's UA, it would typically imply a BYE; - presumably, when the user picked up the phone, a 2xx was - generated, and so hanging up would result in a BYE after the ACK - is received. This does not mean a user cannot hang up before - receipt of the ACK, it just means that the software in his phone - needs to maintain state for a short while in order to clean up - properly. If the particular UI allows for the user to reject a - call before its answered, a 403 (Forbidden) is a good way to - express that. As per the rules above, a BYE can't be sent. - -15.1 Terminating a Session with a BYE Request - -15.1.1 UAC Behavior - - A BYE request is constructed as would any other request within a - dialog, as described in Section 12. - - Once the BYE is constructed, the UAC core creates a new non-INVITE - client transaction, and passes it the BYE request. The UAC MUST - consider the session terminated (and therefore stop sending or - listening for media) as soon as the BYE request is passed to the - client transaction. If the response for the BYE is a 481 - (Call/Transaction Does Not Exist) or a 408 (Request Timeout) or no - - - - - - -Rosenberg, et. al. Standards Track [Page 90] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - response at all is received for the BYE (that is, a timeout is - returned by the client transaction), the UAC MUST consider the - session and the dialog terminated. - -15.1.2 UAS Behavior - - A UAS first processes the BYE request according to the general UAS - processing described in Section 8.2. A UAS core receiving a BYE - request checks if it matches an existing dialog. If the BYE does not - match an existing dialog, the UAS core SHOULD generate a 481 - (Call/Transaction Does Not Exist) response and pass that to the - server transaction. - - This rule means that a BYE sent without tags by a UAC will be - rejected. This is a change from RFC 2543, which allowed BYE - without tags. - - A UAS core receiving a BYE request for an existing dialog MUST follow - the procedures of Section 12.2.2 to process the request. Once done, - the UAS SHOULD terminate the session (and therefore stop sending and - listening for media). The only case where it can elect not to are - multicast sessions, where participation is possible even if the other - participant in the dialog has terminated its involvement in the - session. Whether or not it ends its participation on the session, - the UAS core MUST generate a 2xx response to the BYE, and MUST pass - that to the server transaction for transmission. - - The UAS MUST still respond to any pending requests received for that - dialog. It is RECOMMENDED that a 487 (Request Terminated) response - be generated to those pending requests. - -16 Proxy Behavior - -16.1 Overview - - SIP proxies are elements that route SIP requests to user agent - servers and SIP responses to user agent clients. A request may - traverse several proxies on its way to a UAS. Each will make routing - decisions, modifying the request before forwarding it to the next - element. Responses will route through the same set of proxies - traversed by the request in the reverse order. - - Being a proxy is a logical role for a SIP element. When a request - arrives, an element that can play the role of a proxy first decides - if it needs to respond to the request on its own. For instance, the - request may be malformed or the element may need credentials from the - client before acting as a proxy. The element MAY respond with any - - - - -Rosenberg, et. al. Standards Track [Page 91] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - appropriate error code. When responding directly to a request, the - element is playing the role of a UAS and MUST behave as described in - Section 8.2. - - A proxy can operate in either a stateful or stateless mode for each - new request. When stateless, a proxy acts as a simple forwarding - element. It forwards each request downstream to a single element - determined by making a targeting and routing decision based on the - request. It simply forwards every response it receives upstream. A - stateless proxy discards information about a message once the message - has been forwarded. A stateful proxy remembers information - (specifically, transaction state) about each incoming request and any - requests it sends as a result of processing the incoming request. It - uses this information to affect the processing of future messages - associated with that request. A stateful proxy MAY choose to "fork" - a request, routing it to multiple destinations. Any request that is - forwarded to more than one location MUST be handled statefully. - - In some circumstances, a proxy MAY forward requests using stateful - transports (such as TCP) without being transaction-stateful. For - instance, a proxy MAY forward a request from one TCP connection to - another transaction statelessly as long as it places enough - information in the message to be able to forward the response down - the same connection the request arrived on. Requests forwarded - between different types of transports where the proxy's TU must take - an active role in ensuring reliable delivery on one of the transports - MUST be forwarded transaction statefully. - - A stateful proxy MAY transition to stateless operation at any time - during the processing of a request, so long as it did not do anything - that would otherwise prevent it from being stateless initially - (forking, for example, or generation of a 100 response). When - performing such a transition, all state is simply discarded. The - proxy SHOULD NOT initiate a CANCEL request. - - Much of the processing involved when acting statelessly or statefully - for a request is identical. The next several subsections are written - from the point of view of a stateful proxy. The last section calls - out those places where a stateless proxy behaves differently. - -16.2 Stateful Proxy - - When stateful, a proxy is purely a SIP transaction processing engine. - Its behavior is modeled here in terms of the server and client - transactions defined in Section 17. A stateful proxy has a server - transaction associated with one or more client transactions by a - higher layer proxy processing component (see figure 3), known as a - proxy core. An incoming request is processed by a server - - - -Rosenberg, et. al. Standards Track [Page 92] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - transaction. Requests from the server transaction are passed to a - proxy core. The proxy core determines where to route the request, - choosing one or more next-hop locations. An outgoing request for - each next-hop location is processed by its own associated client - transaction. The proxy core collects the responses from the client - transactions and uses them to send responses to the server - transaction. - - A stateful proxy creates a new server transaction for each new - request received. Any retransmissions of the request will then be - handled by that server transaction per Section 17. The proxy core - MUST behave as a UAS with respect to sending an immediate provisional - on that server transaction (such as 100 Trying) as described in - Section 8.2.6. Thus, a stateful proxy SHOULD NOT generate 100 - (Trying) responses to non-INVITE requests. - - This is a model of proxy behavior, not of software. An - implementation is free to take any approach that replicates the - external behavior this model defines. - - For all new requests, including any with unknown methods, an element - intending to proxy the request MUST: - - 1. Validate the request (Section 16.3) - - 2. Preprocess routing information (Section 16.4) - - 3. Determine target(s) for the request (Section 16.5) - - +--------------------+ - | | +---+ - | | | C | - | | | T | - | | +---+ - +---+ | Proxy | +---+ CT = Client Transaction - | S | | "Higher" Layer | | C | - | T | | | | T | ST = Server Transaction - +---+ | | +---+ - | | +---+ - | | | C | - | | | T | - | | +---+ - +--------------------+ - - Figure 3: Stateful Proxy Model - - - - - - -Rosenberg, et. al. Standards Track [Page 93] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 4. Forward the request to each target (Section 16.6) - - 5. Process all responses (Section 16.7) - -16.3 Request Validation - - Before an element can proxy a request, it MUST verify the message's - validity. A valid message must pass the following checks: - - 1. Reasonable Syntax - - 2. URI scheme - - 3. Max-Forwards - - 4. (Optional) Loop Detection - - 5. Proxy-Require - - 6. Proxy-Authorization - - If any of these checks fail, the element MUST behave as a user agent - server (see Section 8.2) and respond with an error code. - - Notice that a proxy is not required to detect merged requests and - MUST NOT treat merged requests as an error condition. The endpoints - receiving the requests will resolve the merge as described in Section - 8.2.2.2. - - 1. Reasonable syntax check - - The request MUST be well-formed enough to be handled with a server - transaction. Any components involved in the remainder of these - Request Validation steps or the Request Forwarding section MUST be - well-formed. Any other components, well-formed or not, SHOULD be - ignored and remain unchanged when the message is forwarded. For - instance, an element would not reject a request because of a - malformed Date header field. Likewise, a proxy would not remove a - malformed Date header field before forwarding a request. - - This protocol is designed to be extended. Future extensions may - define new methods and header fields at any time. An element MUST - NOT refuse to proxy a request because it contains a method or - header field it does not know about. - - - - - - - -Rosenberg, et. al. Standards Track [Page 94] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 2. URI scheme check - - If the Request-URI has a URI whose scheme is not understood by the - proxy, the proxy SHOULD reject the request with a 416 (Unsupported - URI Scheme) response. - - 3. Max-Forwards check - - The Max-Forwards header field (Section 20.22) is used to limit the - number of elements a SIP request can traverse. - - If the request does not contain a Max-Forwards header field, this - check is passed. - - If the request contains a Max-Forwards header field with a field - value greater than zero, the check is passed. - - If the request contains a Max-Forwards header field with a field - value of zero (0), the element MUST NOT forward the request. If - the request was for OPTIONS, the element MAY act as the final - recipient and respond per Section 11. Otherwise, the element MUST - return a 483 (Too many hops) response. - - 4. Optional Loop Detection check - - An element MAY check for forwarding loops before forwarding a - request. If the request contains a Via header field with a sent- - by value that equals a value placed into previous requests by the - proxy, the request has been forwarded by this element before. The - request has either looped or is legitimately spiraling through the - element. To determine if the request has looped, the element MAY - perform the branch parameter calculation described in Step 8 of - Section 16.6 on this message and compare it to the parameter - received in that Via header field. If the parameters match, the - request has looped. If they differ, the request is spiraling, and - processing continues. If a loop is detected, the element MAY - return a 482 (Loop Detected) response. - - 5. Proxy-Require check - - Future extensions to this protocol may introduce features that - require special handling by proxies. Endpoints will include a - Proxy-Require header field in requests that use these features, - telling the proxy not to process the request unless the feature is - understood. - - - - - - -Rosenberg, et. al. Standards Track [Page 95] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If the request contains a Proxy-Require header field (Section - 20.29) with one or more option-tags this element does not - understand, the element MUST return a 420 (Bad Extension) - response. The response MUST include an Unsupported (Section - 20.40) header field listing those option-tags the element did not - understand. - - 6. Proxy-Authorization check - - If an element requires credentials before forwarding a request, - the request MUST be inspected as described in Section 22.3. That - section also defines what the element must do if the inspection - fails. - -16.4 Route Information Preprocessing - - The proxy MUST inspect the Request-URI of the request. If the - Request-URI of the request contains a value this proxy previously - placed into a Record-Route header field (see Section 16.6 item 4), - the proxy MUST replace the Request-URI in the request with the last - value from the Route header field, and remove that value from the - Route header field. The proxy MUST then proceed as if it received - this modified request. - - This will only happen when the element sending the request to the - proxy (which may have been an endpoint) is a strict router. This - rewrite on receive is necessary to enable backwards compatibility - with those elements. It also allows elements following this - specification to preserve the Request-URI through strict-routing - proxies (see Section 12.2.1.1). - - This requirement does not obligate a proxy to keep state in order - to detect URIs it previously placed in Record-Route header fields. - Instead, a proxy need only place enough information in those URIs - to recognize them as values it provided when they later appear. - - If the Request-URI contains a maddr parameter, the proxy MUST check - to see if its value is in the set of addresses or domains the proxy - is configured to be responsible for. If the Request-URI has a maddr - parameter with a value the proxy is responsible for, and the request - was received using the port and transport indicated (explicitly or by - default) in the Request-URI, the proxy MUST strip the maddr and any - non-default port or transport parameter and continue processing as if - those values had not been present in the request. - - - - - - - -Rosenberg, et. al. Standards Track [Page 96] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - A request may arrive with a maddr matching the proxy, but on a - port or transport different from that indicated in the URI. Such - a request needs to be forwarded to the proxy using the indicated - port and transport. - - If the first value in the Route header field indicates this proxy, - the proxy MUST remove that value from the request. - -16.5 Determining Request Targets - - Next, the proxy calculates the target(s) of the request. The set of - targets will either be predetermined by the contents of the request - or will be obtained from an abstract location service. Each target - in the set is represented as a URI. - - If the Request-URI of the request contains an maddr parameter, the - Request-URI MUST be placed into the target set as the only target - URI, and the proxy MUST proceed to Section 16.6. - - If the domain of the Request-URI indicates a domain this element is - not responsible for, the Request-URI MUST be placed into the target - set as the only target, and the element MUST proceed to the task of - Request Forwarding (Section 16.6). - - There are many circumstances in which a proxy might receive a - request for a domain it is not responsible for. A firewall proxy - handling outgoing calls (the way HTTP proxies handle outgoing - requests) is an example of where this is likely to occur. - - If the target set for the request has not been predetermined as - described above, this implies that the element is responsible for the - domain in the Request-URI, and the element MAY use whatever mechanism - it desires to determine where to send the request. Any of these - mechanisms can be modeled as accessing an abstract Location Service. - This may consist of obtaining information from a location service - created by a SIP Registrar, reading a database, consulting a presence - server, utilizing other protocols, or simply performing an - algorithmic substitution on the Request-URI. When accessing the - location service constructed by a registrar, the Request-URI MUST - first be canonicalized as described in Section 10.3 before being used - as an index. The output of these mechanisms is used to construct the - target set. - - If the Request-URI does not provide sufficient information for the - proxy to determine the target set, it SHOULD return a 485 (Ambiguous) - response. This response SHOULD contain a Contact header field - containing URIs of new addresses to be tried. For example, an INVITE - - - - -Rosenberg, et. al. Standards Track [Page 97] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - to sip:John.Smith@company.com may be ambiguous at a proxy whose - location service has multiple John Smiths listed. See Section - 21.4.23 for details. - - Any information in or about the request or the current environment of - the element MAY be used in the construction of the target set. For - instance, different sets may be constructed depending on contents or - the presence of header fields and bodies, the time of day of the - request's arrival, the interface on which the request arrived, - failure of previous requests, or even the element's current level of - utilization. - - As potential targets are located through these services, their URIs - are added to the target set. Targets can only be placed in the - target set once. If a target URI is already present in the set - (based on the definition of equality for the URI type), it MUST NOT - be added again. - - A proxy MUST NOT add additional targets to the target set if the - Request-URI of the original request does not indicate a resource this - proxy is responsible for. - - A proxy can only change the Request-URI of a request during - forwarding if it is responsible for that URI. If the proxy is not - responsible for that URI, it will not recurse on 3xx or 416 - responses as described below. - - If the Request-URI of the original request indicates a resource this - proxy is responsible for, the proxy MAY continue to add targets to - the set after beginning Request Forwarding. It MAY use any - information obtained during that processing to determine new targets. - For instance, a proxy may choose to incorporate contacts obtained in - a redirect response (3xx) into the target set. If a proxy uses a - dynamic source of information while building the target set (for - instance, if it consults a SIP Registrar), it SHOULD monitor that - source for the duration of processing the request. New locations - SHOULD be added to the target set as they become available. As - above, any given URI MUST NOT be added to the set more than once. - - Allowing a URI to be added to the set only once reduces - unnecessary network traffic, and in the case of incorporating - contacts from redirect requests prevents infinite recursion. - - For example, a trivial location service is a "no-op", where the - target URI is equal to the incoming request URI. The request is sent - to a specific next hop proxy for further processing. During request - - - - - -Rosenberg, et. al. Standards Track [Page 98] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - forwarding of Section 16.6, Item 6, the identity of that next hop, - expressed as a SIP or SIPS URI, is inserted as the top-most Route - header field value into the request. - - If the Request-URI indicates a resource at this proxy that does not - exist, the proxy MUST return a 404 (Not Found) response. - - If the target set remains empty after applying all of the above, the - proxy MUST return an error response, which SHOULD be the 480 - (Temporarily Unavailable) response. - -16.6 Request Forwarding - - As soon as the target set is non-empty, a proxy MAY begin forwarding - the request. A stateful proxy MAY process the set in any order. It - MAY process multiple targets serially, allowing each client - transaction to complete before starting the next. It MAY start - client transactions with every target in parallel. It also MAY - arbitrarily divide the set into groups, processing the groups - serially and processing the targets in each group in parallel. - - A common ordering mechanism is to use the qvalue parameter of targets - obtained from Contact header fields (see Section 20.10). Targets are - processed from highest qvalue to lowest. Targets with equal qvalues - may be processed in parallel. - - A stateful proxy must have a mechanism to maintain the target set as - responses are received and associate the responses to each forwarded - request with the original request. For the purposes of this model, - this mechanism is a "response context" created by the proxy layer - before forwarding the first request. - - For each target, the proxy forwards the request following these - steps: - - 1. Make a copy of the received request - - 2. Update the Request-URI - - 3. Update the Max-Forwards header field - - 4. Optionally add a Record-route header field value - - 5. Optionally add additional header fields - - 6. Postprocess routing information - - 7. Determine the next-hop address, port, and transport - - - -Rosenberg, et. al. Standards Track [Page 99] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 8. Add a Via header field value - - 9. Add a Content-Length header field if necessary - - 10. Forward the new request - - 11. Set timer C - - Each of these steps is detailed below: - - 1. Copy request - - The proxy starts with a copy of the received request. The copy - MUST initially contain all of the header fields from the - received request. Fields not detailed in the processing - described below MUST NOT be removed. The copy SHOULD maintain - the ordering of the header fields as in the received request. - The proxy MUST NOT reorder field values with a common field - name (See Section 7.3.1). The proxy MUST NOT add to, modify, - or remove the message body. - - An actual implementation need not perform a copy; the primary - requirement is that the processing for each next hop begin with - the same request. - - 2. Request-URI - - The Request-URI in the copy's start line MUST be replaced with - the URI for this target. If the URI contains any parameters - not allowed in a Request-URI, they MUST be removed. - - This is the essence of a proxy's role. This is the mechanism - through which a proxy routes a request toward its destination. - - In some circumstances, the received Request-URI is placed into - the target set without being modified. For that target, the - replacement above is effectively a no-op. - - 3. Max-Forwards - - If the copy contains a Max-Forwards header field, the proxy - MUST decrement its value by one (1). - - If the copy does not contain a Max-Forwards header field, the - proxy MUST add one with a field value, which SHOULD be 70. - - Some existing UAs will not provide a Max-Forwards header field - in a request. - - - -Rosenberg, et. al. Standards Track [Page 100] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 4. Record-Route - - If this proxy wishes to remain on the path of future requests - in a dialog created by this request (assuming the request - creates a dialog), it MUST insert a Record-Route header field - value into the copy before any existing Record-Route header - field values, even if a Route header field is already present. - - Requests establishing a dialog may contain a preloaded Route - header field. - - If this request is already part of a dialog, the proxy SHOULD - insert a Record-Route header field value if it wishes to remain - on the path of future requests in the dialog. In normal - endpoint operation as described in Section 12, these Record- - Route header field values will not have any effect on the route - sets used by the endpoints. - - The proxy will remain on the path if it chooses to not insert a - Record-Route header field value into requests that are already - part of a dialog. However, it would be removed from the path - when an endpoint that has failed reconstitutes the dialog. - - A proxy MAY insert a Record-Route header field value into any - request. If the request does not initiate a dialog, the - endpoints will ignore the value. See Section 12 for details on - how endpoints use the Record-Route header field values to - construct Route header fields. - - Each proxy in the path of a request chooses whether to add a - Record-Route header field value independently - the presence of - a Record-Route header field in a request does not obligate this - proxy to add a value. - - The URI placed in the Record-Route header field value MUST be a - SIP or SIPS URI. This URI MUST contain an lr parameter (see - Section 19.1.1). This URI MAY be different for each - destination the request is forwarded to. The URI SHOULD NOT - contain the transport parameter unless the proxy has knowledge - (such as in a private network) that the next downstream element - that will be in the path of subsequent requests supports that - transport. - - The URI this proxy provides will be used by some other element - to make a routing decision. This proxy, in general, has no way - of knowing the capabilities of that element, so it must - restrict itself to the mandatory elements of a SIP - implementation: SIP URIs and either the TCP or UDP transports. - - - -Rosenberg, et. al. Standards Track [Page 101] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The URI placed in the Record-Route header field MUST resolve to - the element inserting it (or a suitable stand-in) when the - server location procedures of [4] are applied to it, so that - subsequent requests reach the same SIP element. If the - Request-URI contains a SIPS URI, or the topmost Route header - field value (after the post processing of bullet 6) contains a - SIPS URI, the URI placed into the Record-Route header field - MUST be a SIPS URI. Furthermore, if the request was not - received over TLS, the proxy MUST insert a Record-Route header - field. In a similar fashion, a proxy that receives a request - over TLS, but generates a request without a SIPS URI in the - Request-URI or topmost Route header field value (after the post - processing of bullet 6), MUST insert a Record-Route header - field that is not a SIPS URI. - - A proxy at a security perimeter must remain on the perimeter - throughout the dialog. - - If the URI placed in the Record-Route header field needs to be - rewritten when it passes back through in a response, the URI - MUST be distinct enough to locate at that time. (The request - may spiral through this proxy, resulting in more than one - Record-Route header field value being added). Item 8 of - Section 16.7 recommends a mechanism to make the URI - sufficiently distinct. - - The proxy MAY include parameters in the Record-Route header - field value. These will be echoed in some responses to the - request such as the 200 (OK) responses to INVITE. Such - parameters may be useful for keeping state in the message - rather than the proxy. - - If a proxy needs to be in the path of any type of dialog (such - as one straddling a firewall), it SHOULD add a Record-Route - header field value to every request with a method it does not - understand since that method may have dialog semantics. - - The URI a proxy places into a Record-Route header field is only - valid for the lifetime of any dialog created by the transaction - in which it occurs. A dialog-stateful proxy, for example, MAY - refuse to accept future requests with that value in the - Request-URI after the dialog has terminated. Non-dialog- - stateful proxies, of course, have no concept of when the dialog - has terminated, but they MAY encode enough information in the - value to compare it against the dialog identifier of future - requests and MAY reject requests not matching that information. - Endpoints MUST NOT use a URI obtained from a Record-Route - header field outside the dialog in which it was provided. See - - - -Rosenberg, et. al. Standards Track [Page 102] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Section 12 for more information on an endpoint's use of - Record-Route header fields. - - Record-routing may be required by certain services where the - proxy needs to observe all messages in a dialog. However, it - slows down processing and impairs scalability and thus proxies - should only record-route if required for a particular service. - - The Record-Route process is designed to work for any SIP - request that initiates a dialog. INVITE is the only such - request in this specification, but extensions to the protocol - MAY define others. - - 5. Add Additional Header Fields - - The proxy MAY add any other appropriate header fields to the - copy at this point. - - 6. Postprocess routing information - - A proxy MAY have a local policy that mandates that a request - visit a specific set of proxies before being delivered to the - destination. A proxy MUST ensure that all such proxies are - loose routers. Generally, this can only be known with - certainty if the proxies are within the same administrative - domain. This set of proxies is represented by a set of URIs - (each of which contains the lr parameter). This set MUST be - pushed into the Route header field of the copy ahead of any - existing values, if present. If the Route header field is - absent, it MUST be added, containing that list of URIs. - - If the proxy has a local policy that mandates that the request - visit one specific proxy, an alternative to pushing a Route - value into the Route header field is to bypass the forwarding - logic of item 10 below, and instead just send the request to - the address, port, and transport for that specific proxy. If - the request has a Route header field, this alternative MUST NOT - be used unless it is known that next hop proxy is a loose - router. Otherwise, this approach MAY be used, but the Route - insertion mechanism above is preferred for its robustness, - flexibility, generality and consistency of operation. - Furthermore, if the Request-URI contains a SIPS URI, TLS MUST - be used to communicate with that proxy. - - If the copy contains a Route header field, the proxy MUST - inspect the URI in its first value. If that URI does not - contain an lr parameter, the proxy MUST modify the copy as - follows: - - - -Rosenberg, et. al. Standards Track [Page 103] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - - The proxy MUST place the Request-URI into the Route header - field as the last value. - - - The proxy MUST then place the first Route header field value - into the Request-URI and remove that value from the Route - header field. - - Appending the Request-URI to the Route header field is part of - a mechanism used to pass the information in that Request-URI - through strict-routing elements. "Popping" the first Route - header field value into the Request-URI formats the message the - way a strict-routing element expects to receive it (with its - own URI in the Request-URI and the next location to visit in - the first Route header field value). - - 7. Determine Next-Hop Address, Port, and Transport - - The proxy MAY have a local policy to send the request to a - specific IP address, port, and transport, independent of the - values of the Route and Request-URI. Such a policy MUST NOT be - used if the proxy is not certain that the IP address, port, and - transport correspond to a server that is a loose router. - However, this mechanism for sending the request through a - specific next hop is NOT RECOMMENDED; instead a Route header - field should be used for that purpose as described above. - - In the absence of such an overriding mechanism, the proxy - applies the procedures listed in [4] as follows to determine - where to send the request. If the proxy has reformatted the - request to send to a strict-routing element as described in - step 6 above, the proxy MUST apply those procedures to the - Request-URI of the request. Otherwise, the proxy MUST apply - the procedures to the first value in the Route header field, if - present, else the Request-URI. The procedures will produce an - ordered set of (address, port, transport) tuples. - Independently of which URI is being used as input to the - procedures of [4], if the Request-URI specifies a SIPS - resource, the proxy MUST follow the procedures of [4] as if the - input URI were a SIPS URI. - - As described in [4], the proxy MUST attempt to deliver the - message to the first tuple in that set, and proceed through the - set in order until the delivery attempt succeeds. - - For each tuple attempted, the proxy MUST format the message as - appropriate for the tuple and send the request using a new - client transaction as detailed in steps 8 through 10. - - - - -Rosenberg, et. al. Standards Track [Page 104] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Since each attempt uses a new client transaction, it represents - a new branch. Thus, the branch parameter provided with the Via - header field inserted in step 8 MUST be different for each - attempt. - - If the client transaction reports failure to send the request - or a timeout from its state machine, the proxy continues to the - next address in that ordered set. If the ordered set is - exhausted, the request cannot be forwarded to this element in - the target set. The proxy does not need to place anything in - the response context, but otherwise acts as if this element of - the target set returned a 408 (Request Timeout) final response. - - 8. Add a Via header field value - - The proxy MUST insert a Via header field value into the copy - before the existing Via header field values. The construction - of this value follows the same guidelines of Section 8.1.1.7. - This implies that the proxy will compute its own branch - parameter, which will be globally unique for that branch, and - contain the requisite magic cookie. Note that this implies that - the branch parameter will be different for different instances - of a spiraled or looped request through a proxy. - - Proxies choosing to detect loops have an additional constraint - in the value they use for construction of the branch parameter. - A proxy choosing to detect loops SHOULD create a branch - parameter separable into two parts by the implementation. The - first part MUST satisfy the constraints of Section 8.1.1.7 as - described above. The second is used to perform loop detection - and distinguish loops from spirals. - - Loop detection is performed by verifying that, when a request - returns to a proxy, those fields having an impact on the - processing of the request have not changed. The value placed - in this part of the branch parameter SHOULD reflect all of - those fields (including any Route, Proxy-Require and Proxy- - Authorization header fields). This is to ensure that if the - request is routed back to the proxy and one of those fields - changes, it is treated as a spiral and not a loop (see Section - 16.3). A common way to create this value is to compute a - cryptographic hash of the To tag, From tag, Call-ID header - field, the Request-URI of the request received (before - translation), the topmost Via header, and the sequence number - from the CSeq header field, in addition to any Proxy-Require - and Proxy-Authorization header fields that may be present. The - - - - - -Rosenberg, et. al. Standards Track [Page 105] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - algorithm used to compute the hash is implementation-dependent, - but MD5 (RFC 1321 [35]), expressed in hexadecimal, is a - reasonable choice. (Base64 is not permissible for a token.) - - If a proxy wishes to detect loops, the "branch" parameter it - supplies MUST depend on all information affecting processing of - a request, including the incoming Request-URI and any header - fields affecting the request's admission or routing. This is - necessary to distinguish looped requests from requests whose - routing parameters have changed before returning to this - server. - - The request method MUST NOT be included in the calculation of - the branch parameter. In particular, CANCEL and ACK requests - (for non-2xx responses) MUST have the same branch value as the - corresponding request they cancel or acknowledge. The branch - parameter is used in correlating those requests at the server - handling them (see Sections 17.2.3 and 9.2). - - 9. Add a Content-Length header field if necessary - - If the request will be sent to the next hop using a stream- - based transport and the copy contains no Content-Length header - field, the proxy MUST insert one with the correct value for the - body of the request (see Section 20.14). - - 10. Forward Request - - A stateful proxy MUST create a new client transaction for this - request as described in Section 17.1 and instructs the - transaction to send the request using the address, port and - transport determined in step 7. - - 11. Set timer C - - In order to handle the case where an INVITE request never - generates a final response, the TU uses a timer which is called - timer C. Timer C MUST be set for each client transaction when - an INVITE request is proxied. The timer MUST be larger than 3 - minutes. Section 16.7 bullet 2 discusses how this timer is - updated with provisional responses, and Section 16.8 discusses - processing when it fires. - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 106] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -16.7 Response Processing - - When a response is received by an element, it first tries to locate a - client transaction (Section 17.1.3) matching the response. If none - is found, the element MUST process the response (even if it is an - informational response) as a stateless proxy (described below). If a - match is found, the response is handed to the client transaction. - - Forwarding responses for which a client transaction (or more - generally any knowledge of having sent an associated request) is - not found improves robustness. In particular, it ensures that - "late" 2xx responses to INVITE requests are forwarded properly. - - As client transactions pass responses to the proxy layer, the - following processing MUST take place: - - 1. Find the appropriate response context - - 2. Update timer C for provisional responses - - 3. Remove the topmost Via - - 4. Add the response to the response context - - 5. Check to see if this response should be forwarded immediately - - 6. When necessary, choose the best final response from the - response context - - If no final response has been forwarded after every client - transaction associated with the response context has been terminated, - the proxy must choose and forward the "best" response from those it - has seen so far. - - The following processing MUST be performed on each response that is - forwarded. It is likely that more than one response to each request - will be forwarded: at least each provisional and one final response. - - 7. Aggregate authorization header field values if necessary - - 8. Optionally rewrite Record-Route header field values - - 9. Forward the response - - 10. Generate any necessary CANCEL requests - - - - - - -Rosenberg, et. al. Standards Track [Page 107] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Each of the above steps are detailed below: - - 1. Find Context - - The proxy locates the "response context" it created before - forwarding the original request using the key described in - Section 16.6. The remaining processing steps take place in - this context. - - 2. Update timer C for provisional responses - - For an INVITE transaction, if the response is a provisional - response with status codes 101 to 199 inclusive (i.e., anything - but 100), the proxy MUST reset timer C for that client - transaction. The timer MAY be reset to a different value, but - this value MUST be greater than 3 minutes. - - 3. Via - - The proxy removes the topmost Via header field value from the - response. - - If no Via header field values remain in the response, the - response was meant for this element and MUST NOT be forwarded. - The remainder of the processing described in this section is - not performed on this message, the UAC processing rules - described in Section 8.1.3 are followed instead (transport - layer processing has already occurred). - - This will happen, for instance, when the element generates - CANCEL requests as described in Section 10. - - 4. Add response to context - - Final responses received are stored in the response context - until a final response is generated on the server transaction - associated with this context. The response may be a candidate - for the best final response to be returned on that server - transaction. Information from this response may be needed in - forming the best response, even if this response is not chosen. - - If the proxy chooses to recurse on any contacts in a 3xx - response by adding them to the target set, it MUST remove them - from the response before adding the response to the response - context. However, a proxy SHOULD NOT recurse to a non-SIPS URI - if the Request-URI of the original request was a SIPS URI. If - - - - - -Rosenberg, et. al. Standards Track [Page 108] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - the proxy recurses on all of the contacts in a 3xx response, - the proxy SHOULD NOT add the resulting contactless response to - the response context. - - Removing the contact before adding the response to the response - context prevents the next element upstream from retrying a - location this proxy has already attempted. - - 3xx responses may contain a mixture of SIP, SIPS, and non-SIP - URIs. A proxy may choose to recurse on the SIP and SIPS URIs - and place the remainder into the response context to be - returned, potentially in the final response. - - If a proxy receives a 416 (Unsupported URI Scheme) response to - a request whose Request-URI scheme was not SIP, but the scheme - in the original received request was SIP or SIPS (that is, the - proxy changed the scheme from SIP or SIPS to something else - when it proxied a request), the proxy SHOULD add a new URI to - the target set. This URI SHOULD be a SIP URI version of the - non-SIP URI that was just tried. In the case of the tel URL, - this is accomplished by placing the telephone-subscriber part - of the tel URL into the user part of the SIP URI, and setting - the hostpart to the domain where the prior request was sent. - See Section 19.1.6 for more detail on forming SIP URIs from tel - URLs. - - As with a 3xx response, if a proxy "recurses" on the 416 by - trying a SIP or SIPS URI instead, the 416 response SHOULD NOT - be added to the response context. - - 5. Check response for forwarding - - Until a final response has been sent on the server transaction, - the following responses MUST be forwarded immediately: - - - Any provisional response other than 100 (Trying) - - - Any 2xx response - - If a 6xx response is received, it is not immediately forwarded, - but the stateful proxy SHOULD cancel all client pending - transactions as described in Section 10, and it MUST NOT create - any new branches in this context. - - This is a change from RFC 2543, which mandated that the proxy - was to forward the 6xx response immediately. For an INVITE - transaction, this approach had the problem that a 2xx response - could arrive on another branch, in which case the proxy would - - - -Rosenberg, et. al. Standards Track [Page 109] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - have to forward the 2xx. The result was that the UAC could - receive a 6xx response followed by a 2xx response, which should - never be allowed to happen. Under the new rules, upon - receiving a 6xx, a proxy will issue a CANCEL request, which - will generally result in 487 responses from all outstanding - client transactions, and then at that point the 6xx is - forwarded upstream. - - After a final response has been sent on the server transaction, - the following responses MUST be forwarded immediately: - - - Any 2xx response to an INVITE request - - A stateful proxy MUST NOT immediately forward any other - responses. In particular, a stateful proxy MUST NOT forward - any 100 (Trying) response. Those responses that are candidates - for forwarding later as the "best" response have been gathered - as described in step "Add Response to Context". - - Any response chosen for immediate forwarding MUST be processed - as described in steps "Aggregate Authorization Header Field - Values" through "Record-Route". - - This step, combined with the next, ensures that a stateful - proxy will forward exactly one final response to a non-INVITE - request, and either exactly one non-2xx response or one or more - 2xx responses to an INVITE request. - - 6. Choosing the best response - - A stateful proxy MUST send a final response to a response - context's server transaction if no final responses have been - immediately forwarded by the above rules and all client - transactions in this response context have been terminated. - - The stateful proxy MUST choose the "best" final response among - those received and stored in the response context. - - If there are no final responses in the context, the proxy MUST - send a 408 (Request Timeout) response to the server - transaction. - - Otherwise, the proxy MUST forward a response from the responses - stored in the response context. It MUST choose from the 6xx - class responses if any exist in the context. If no 6xx class - responses are present, the proxy SHOULD choose from the lowest - response class stored in the response context. The proxy MAY - select any response within that chosen class. The proxy SHOULD - - - -Rosenberg, et. al. Standards Track [Page 110] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - give preference to responses that provide information affecting - resubmission of this request, such as 401, 407, 415, 420, and - 484 if the 4xx class is chosen. - - A proxy which receives a 503 (Service Unavailable) response - SHOULD NOT forward it upstream unless it can determine that any - subsequent requests it might proxy will also generate a 503. - In other words, forwarding a 503 means that the proxy knows it - cannot service any requests, not just the one for the Request- - URI in the request which generated the 503. If the only - response that was received is a 503, the proxy SHOULD generate - a 500 response and forward that upstream. - - The forwarded response MUST be processed as described in steps - "Aggregate Authorization Header Field Values" through "Record- - Route". - - For example, if a proxy forwarded a request to 4 locations, and - received 503, 407, 501, and 404 responses, it may choose to - forward the 407 (Proxy Authentication Required) response. - - 1xx and 2xx responses may be involved in the establishment of - dialogs. When a request does not contain a To tag, the To tag - in the response is used by the UAC to distinguish multiple - responses to a dialog creating request. A proxy MUST NOT - insert a tag into the To header field of a 1xx or 2xx response - if the request did not contain one. A proxy MUST NOT modify - the tag in the To header field of a 1xx or 2xx response. - - Since a proxy may not insert a tag into the To header field of - a 1xx response to a request that did not contain one, it cannot - issue non-100 provisional responses on its own. However, it - can branch the request to a UAS sharing the same element as the - proxy. This UAS can return its own provisional responses, - entering into an early dialog with the initiator of the - request. The UAS does not have to be a discreet process from - the proxy. It could be a virtual UAS implemented in the same - code space as the proxy. - - 3-6xx responses are delivered hop-by-hop. When issuing a 3-6xx - response, the element is effectively acting as a UAS, issuing - its own response, usually based on the responses received from - downstream elements. An element SHOULD preserve the To tag - when simply forwarding a 3-6xx response to a request that did - not contain a To tag. - - A proxy MUST NOT modify the To tag in any forwarded response to - a request that contains a To tag. - - - -Rosenberg, et. al. Standards Track [Page 111] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - While it makes no difference to the upstream elements if the - proxy replaced the To tag in a forwarded 3-6xx response, - preserving the original tag may assist with debugging. - - When the proxy is aggregating information from several - responses, choosing a To tag from among them is arbitrary, and - generating a new To tag may make debugging easier. This - happens, for instance, when combining 401 (Unauthorized) and - 407 (Proxy Authentication Required) challenges, or combining - Contact values from unencrypted and unauthenticated 3xx - responses. - - 7. Aggregate Authorization Header Field Values - - If the selected response is a 401 (Unauthorized) or 407 (Proxy - Authentication Required), the proxy MUST collect any WWW- - Authenticate and Proxy-Authenticate header field values from - all other 401 (Unauthorized) and 407 (Proxy Authentication - Required) responses received so far in this response context - and add them to this response without modification before - forwarding. The resulting 401 (Unauthorized) or 407 (Proxy - Authentication Required) response could have several WWW- - Authenticate AND Proxy-Authenticate header field values. - - This is necessary because any or all of the destinations the - request was forwarded to may have requested credentials. The - client needs to receive all of those challenges and supply - credentials for each of them when it retries the request. - Motivation for this behavior is provided in Section 26. - - 8. Record-Route - - If the selected response contains a Record-Route header field - value originally provided by this proxy, the proxy MAY choose - to rewrite the value before forwarding the response. This - allows the proxy to provide different URIs for itself to the - next upstream and downstream elements. A proxy may choose to - use this mechanism for any reason. For instance, it is useful - for multi-homed hosts. - - If the proxy received the request over TLS, and sent it out - over a non-TLS connection, the proxy MUST rewrite the URI in - the Record-Route header field to be a SIPS URI. If the proxy - received the request over a non-TLS connection, and sent it out - over TLS, the proxy MUST rewrite the URI in the Record-Route - header field to be a SIP URI. - - - - - -Rosenberg, et. al. Standards Track [Page 112] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The new URI provided by the proxy MUST satisfy the same - constraints on URIs placed in Record-Route header fields in - requests (see Step 4 of Section 16.6) with the following - modifications: - - The URI SHOULD NOT contain the transport parameter unless the - proxy has knowledge that the next upstream (as opposed to - downstream) element that will be in the path of subsequent - requests supports that transport. - - When a proxy does decide to modify the Record-Route header - field in the response, one of the operations it performs is - locating the Record-Route value that it had inserted. If the - request spiraled, and the proxy inserted a Record-Route value - in each iteration of the spiral, locating the correct value in - the response (which must be the proper iteration in the reverse - direction) is tricky. The rules above recommend that a proxy - wishing to rewrite Record-Route header field values insert - sufficiently distinct URIs into the Record-Route header field - so that the right one may be selected for rewriting. A - RECOMMENDED mechanism to achieve this is for the proxy to - append a unique identifier for the proxy instance to the user - portion of the URI. - - When the response arrives, the proxy modifies the first - Record-Route whose identifier matches the proxy instance. The - modification results in a URI without this piece of data - appended to the user portion of the URI. Upon the next - iteration, the same algorithm (find the topmost Record-Route - header field value with the parameter) will correctly extract - the next Record-Route header field value inserted by that - proxy. - - Not every response to a request to which a proxy adds a - Record-Route header field value will contain a Record-Route - header field. If the response does contain a Record-Route - header field, it will contain the value the proxy added. - - 9. Forward response - - After performing the processing described in steps "Aggregate - Authorization Header Field Values" through "Record-Route", the - proxy MAY perform any feature specific manipulations on the - selected response. The proxy MUST NOT add to, modify, or - remove the message body. Unless otherwise specified, the proxy - MUST NOT remove any header field values other than the Via - header field value discussed in Section 16.7 Item 3. In - particular, the proxy MUST NOT remove any "received" parameter - - - -Rosenberg, et. al. Standards Track [Page 113] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - it may have added to the next Via header field value while - processing the request associated with this response. The - proxy MUST pass the response to the server transaction - associated with the response context. This will result in the - response being sent to the location now indicated in the - topmost Via header field value. If the server transaction is - no longer available to handle the transmission, the element - MUST forward the response statelessly by sending it to the - server transport. The server transaction might indicate - failure to send the response or signal a timeout in its state - machine. These errors would be logged for diagnostic purposes - as appropriate, but the protocol requires no remedial action - from the proxy. - - The proxy MUST maintain the response context until all of its - associated transactions have been terminated, even after - forwarding a final response. - - 10. Generate CANCELs - - If the forwarded response was a final response, the proxy MUST - generate a CANCEL request for all pending client transactions - associated with this response context. A proxy SHOULD also - generate a CANCEL request for all pending client transactions - associated with this response context when it receives a 6xx - response. A pending client transaction is one that has - received a provisional response, but no final response (it is - in the proceeding state) and has not had an associated CANCEL - generated for it. Generating CANCEL requests is described in - Section 9.1. - - The requirement to CANCEL pending client transactions upon - forwarding a final response does not guarantee that an endpoint - will not receive multiple 200 (OK) responses to an INVITE. 200 - (OK) responses on more than one branch may be generated before - the CANCEL requests can be sent and processed. Further, it is - reasonable to expect that a future extension may override this - requirement to issue CANCEL requests. - -16.8 Processing Timer C - - If timer C should fire, the proxy MUST either reset the timer with - any value it chooses, or terminate the client transaction. If the - client transaction has received a provisional response, the proxy - MUST generate a CANCEL request matching that transaction. If the - client transaction has not received a provisional response, the proxy - MUST behave as if the transaction received a 408 (Request Timeout) - response. - - - -Rosenberg, et. al. Standards Track [Page 114] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Allowing the proxy to reset the timer allows the proxy to dynamically - extend the transaction's lifetime based on current conditions (such - as utilization) when the timer fires. - -16.9 Handling Transport Errors - - If the transport layer notifies a proxy of an error when it tries to - forward a request (see Section 18.4), the proxy MUST behave as if the - forwarded request received a 503 (Service Unavailable) response. - - If the proxy is notified of an error when forwarding a response, it - drops the response. The proxy SHOULD NOT cancel any outstanding - client transactions associated with this response context due to this - notification. - - If a proxy cancels its outstanding client transactions, a single - malicious or misbehaving client can cause all transactions to fail - through its Via header field. - -16.10 CANCEL Processing - - A stateful proxy MAY generate a CANCEL to any other request it has - generated at any time (subject to receiving a provisional response to - that request as described in section 9.1). A proxy MUST cancel any - pending client transactions associated with a response context when - it receives a matching CANCEL request. - - A stateful proxy MAY generate CANCEL requests for pending INVITE - client transactions based on the period specified in the INVITE's - Expires header field elapsing. However, this is generally - unnecessary since the endpoints involved will take care of signaling - the end of the transaction. - - While a CANCEL request is handled in a stateful proxy by its own - server transaction, a new response context is not created for it. - Instead, the proxy layer searches its existing response contexts for - the server transaction handling the request associated with this - CANCEL. If a matching response context is found, the element MUST - immediately return a 200 (OK) response to the CANCEL request. In - this case, the element is acting as a user agent server as defined in - Section 8.2. Furthermore, the element MUST generate CANCEL requests - for all pending client transactions in the context as described in - Section 16.7 step 10. - - If a response context is not found, the element does not have any - knowledge of the request to apply the CANCEL to. It MUST statelessly - forward the CANCEL request (it may have statelessly forwarded the - associated request previously). - - - -Rosenberg, et. al. Standards Track [Page 115] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -16.11 Stateless Proxy - - When acting statelessly, a proxy is a simple message forwarder. Much - of the processing performed when acting statelessly is the same as - when behaving statefully. The differences are detailed here. - - A stateless proxy does not have any notion of a transaction, or of - the response context used to describe stateful proxy behavior. - Instead, the stateless proxy takes messages, both requests and - responses, directly from the transport layer (See section 18). As a - result, stateless proxies do not retransmit messages on their own. - They do, however, forward all retransmissions they receive (they do - not have the ability to distinguish a retransmission from the - original message). Furthermore, when handling a request statelessly, - an element MUST NOT generate its own 100 (Trying) or any other - provisional response. - - A stateless proxy MUST validate a request as described in Section - 16.3 - - A stateless proxy MUST follow the request processing steps described - in Sections 16.4 through 16.5 with the following exception: - - o A stateless proxy MUST choose one and only one target from the - target set. This choice MUST only rely on fields in the - message and time-invariant properties of the server. In - particular, a retransmitted request MUST be forwarded to the - same destination each time it is processed. Furthermore, - CANCEL and non-Routed ACK requests MUST generate the same - choice as their associated INVITE. - - A stateless proxy MUST follow the request processing steps described - in Section 16.6 with the following exceptions: - - o The requirement for unique branch IDs across space and time - applies to stateless proxies as well. However, a stateless - proxy cannot simply use a random number generator to compute - the first component of the branch ID, as described in Section - 16.6 bullet 8. This is because retransmissions of a request - need to have the same value, and a stateless proxy cannot tell - a retransmission from the original request. Therefore, the - component of the branch parameter that makes it unique MUST be - the same each time a retransmitted request is forwarded. Thus - for a stateless proxy, the branch parameter MUST be computed as - a combinatoric function of message parameters which are - invariant on retransmission. - - - - - -Rosenberg, et. al. Standards Track [Page 116] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The stateless proxy MAY use any technique it likes to guarantee - uniqueness of its branch IDs across transactions. However, the - following procedure is RECOMMENDED. The proxy examines the - branch ID in the topmost Via header field of the received - request. If it begins with the magic cookie, the first - component of the branch ID of the outgoing request is computed - as a hash of the received branch ID. Otherwise, the first - component of the branch ID is computed as a hash of the topmost - Via, the tag in the To header field, the tag in the From header - field, the Call-ID header field, the CSeq number (but not - method), and the Request-URI from the received request. One of - these fields will always vary across two different - transactions. - - o All other message transformations specified in Section 16.6 - MUST result in the same transformation of a retransmitted - request. In particular, if the proxy inserts a Record-Route - value or pushes URIs into the Route header field, it MUST place - the same values in retransmissions of the request. As for the - Via branch parameter, this implies that the transformations - MUST be based on time-invariant configuration or - retransmission-invariant properties of the request. - - o A stateless proxy determines where to forward the request as - described for stateful proxies in Section 16.6 Item 10. The - request is sent directly to the transport layer instead of - through a client transaction. - - Since a stateless proxy must forward retransmitted requests to - the same destination and add identical branch parameters to - each of them, it can only use information from the message - itself and time-invariant configuration data for those - calculations. If the configuration state is not time-invariant - (for example, if a routing table is updated) any requests that - could be affected by the change may not be forwarded - statelessly during an interval equal to the transaction timeout - window before or after the change. The method of processing - the affected requests in that interval is an implementation - decision. A common solution is to forward them transaction - statefully. - - Stateless proxies MUST NOT perform special processing for CANCEL - requests. They are processed by the above rules as any other - requests. In particular, a stateless proxy applies the same Route - header field processing to CANCEL requests that it applies to any - other request. - - - - - -Rosenberg, et. al. Standards Track [Page 117] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Response processing as described in Section 16.7 does not apply to a - proxy behaving statelessly. When a response arrives at a stateless - proxy, the proxy MUST inspect the sent-by value in the first - (topmost) Via header field value. If that address matches the proxy, - (it equals a value this proxy has inserted into previous requests) - the proxy MUST remove that header field value from the response and - forward the result to the location indicated in the next Via header - field value. The proxy MUST NOT add to, modify, or remove the - message body. Unless specified otherwise, the proxy MUST NOT remove - any other header field values. If the address does not match the - proxy, the message MUST be silently discarded. - -16.12 Summary of Proxy Route Processing - - In the absence of local policy to the contrary, the processing a - proxy performs on a request containing a Route header field can be - summarized in the following steps. - - 1. The proxy will inspect the Request-URI. If it indicates a - resource owned by this proxy, the proxy will replace it with - the results of running a location service. Otherwise, the - proxy will not change the Request-URI. - - 2. The proxy will inspect the URI in the topmost Route header - field value. If it indicates this proxy, the proxy removes it - from the Route header field (this route node has been - reached). - - 3. The proxy will forward the request to the resource indicated - by the URI in the topmost Route header field value or in the - Request-URI if no Route header field is present. The proxy - determines the address, port and transport to use when - forwarding the request by applying the procedures in [4] to - that URI. - - If no strict-routing elements are encountered on the path of the - request, the Request-URI will always indicate the target of the - request. - -16.12.1 Examples - -16.12.1.1 Basic SIP Trapezoid - - This scenario is the basic SIP trapezoid, U1 -> P1 -> P2 -> U2, with - both proxies record-routing. Here is the flow. - - - - - - -Rosenberg, et. al. Standards Track [Page 118] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - U1 sends: - - INVITE sip:callee@domain.com SIP/2.0 - Contact: sip:caller@u1.example.com - - to P1. P1 is an outbound proxy. P1 is not responsible for - domain.com, so it looks it up in DNS and sends it there. It also - adds a Record-Route header field value: - - INVITE sip:callee@domain.com SIP/2.0 - Contact: sip:caller@u1.example.com - Record-Route: - - P2 gets this. It is responsible for domain.com so it runs a location - service and rewrites the Request-URI. It also adds a Record-Route - header field value. There is no Route header field, so it resolves - the new Request-URI to determine where to send the request: - - INVITE sip:callee@u2.domain.com SIP/2.0 - Contact: sip:caller@u1.example.com - Record-Route: - Record-Route: - - The callee at u2.domain.com gets this and responds with a 200 OK: - - SIP/2.0 200 OK - Contact: sip:callee@u2.domain.com - Record-Route: - Record-Route: - - The callee at u2 also sets its dialog state's remote target URI to - sip:caller@u1.example.com and its route set to: - - (,) - - This is forwarded by P2 to P1 to U1 as normal. Now, U1 sets its - dialog state's remote target URI to sip:callee@u2.domain.com and its - route set to: - - (,) - - Since all the route set elements contain the lr parameter, U1 - constructs the following BYE request: - - BYE sip:callee@u2.domain.com SIP/2.0 - Route: , - - - - - -Rosenberg, et. al. Standards Track [Page 119] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - As any other element (including proxies) would do, it resolves the - URI in the topmost Route header field value using DNS to determine - where to send the request. This goes to P1. P1 notices that it is - not responsible for the resource indicated in the Request-URI so it - doesn't change it. It does see that it is the first value in the - Route header field, so it removes that value, and forwards the - request to P2: - - BYE sip:callee@u2.domain.com SIP/2.0 - Route: - - P2 also notices it is not responsible for the resource indicated by - the Request-URI (it is responsible for domain.com, not - u2.domain.com), so it doesn't change it. It does see itself in the - first Route header field value, so it removes it and forwards the - following to u2.domain.com based on a DNS lookup against the - Request-URI: - - BYE sip:callee@u2.domain.com SIP/2.0 - -16.12.1.2 Traversing a Strict-Routing Proxy - - In this scenario, a dialog is established across four proxies, each - of which adds Record-Route header field values. The third proxy - implements the strict-routing procedures specified in RFC 2543 and - many works in progress. - - U1->P1->P2->P3->P4->U2 - - The INVITE arriving at U2 contains: - - INVITE sip:callee@u2.domain.com SIP/2.0 - Contact: sip:caller@u1.example.com - Record-Route: - Record-Route: - Record-Route: - Record-Route: - - Which U2 responds to with a 200 OK. Later, U2 sends the following - BYE request to P4 based on the first Route header field value. - - BYE sip:caller@u1.example.com SIP/2.0 - Route: - Route: - Route: - Route: - - - - - -Rosenberg, et. al. Standards Track [Page 120] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - P4 is not responsible for the resource indicated in the Request-URI - so it will leave it alone. It notices that it is the element in the - first Route header field value so it removes it. It then prepares to - send the request based on the now first Route header field value of - sip:p3.middle.com, but it notices that this URI does not contain the - lr parameter, so before sending, it reformats the request to be: - - BYE sip:p3.middle.com SIP/2.0 - Route: - Route: - Route: - - P3 is a strict router, so it forwards the following to P2: - - BYE sip:p2.example.com;lr SIP/2.0 - Route: - Route: - - P2 sees the request-URI is a value it placed into a Record-Route - header field, so before further processing, it rewrites the request - to be: - - BYE sip:caller@u1.example.com SIP/2.0 - Route: - - P2 is not responsible for u1.example.com, so it sends the request to - P1 based on the resolution of the Route header field value. - - P1 notices itself in the topmost Route header field value, so it - removes it, resulting in: - - BYE sip:caller@u1.example.com SIP/2.0 - - Since P1 is not responsible for u1.example.com and there is no Route - header field, P1 will forward the request to u1.example.com based on - the Request-URI. - -16.12.1.3 Rewriting Record-Route Header Field Values - - In this scenario, U1 and U2 are in different private namespaces and - they enter a dialog through a proxy P1, which acts as a gateway - between the namespaces. - - U1->P1->U2 - - - - - - - -Rosenberg, et. al. Standards Track [Page 121] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - U1 sends: - - INVITE sip:callee@gateway.leftprivatespace.com SIP/2.0 - Contact: - - P1 uses its location service and sends the following to U2: - - INVITE sip:callee@rightprivatespace.com SIP/2.0 - Contact: - Record-Route: - - U2 sends this 200 (OK) back to P1: - - SIP/2.0 200 OK - Contact: - Record-Route: - - P1 rewrites its Record-Route header parameter to provide a value that - U1 will find useful, and sends the following to U1: - - SIP/2.0 200 OK - Contact: - Record-Route: - - Later, U1 sends the following BYE request to P1: - - BYE sip:callee@u2.rightprivatespace.com SIP/2.0 - Route: - - which P1 forwards to U2 as: - - BYE sip:callee@u2.rightprivatespace.com SIP/2.0 - -17 Transactions - - SIP is a transactional protocol: interactions between components take - place in a series of independent message exchanges. Specifically, a - SIP transaction consists of a single request and any responses to - that request, which include zero or more provisional responses and - one or more final responses. In the case of a transaction where the - request was an INVITE (known as an INVITE transaction), the - transaction also includes the ACK only if the final response was not - a 2xx response. If the response was a 2xx, the ACK is not considered - part of the transaction. - - The reason for this separation is rooted in the importance of - delivering all 200 (OK) responses to an INVITE to the UAC. To - deliver them all to the UAC, the UAS alone takes responsibility - - - -Rosenberg, et. al. Standards Track [Page 122] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - for retransmitting them (see Section 13.3.1.4), and the UAC alone - takes responsibility for acknowledging them with ACK (see Section - 13.2.2.4). Since this ACK is retransmitted only by the UAC, it is - effectively considered its own transaction. - - Transactions have a client side and a server side. The client side - is known as a client transaction and the server side as a server - transaction. The client transaction sends the request, and the - server transaction sends the response. The client and server - transactions are logical functions that are embedded in any number of - elements. Specifically, they exist within user agents and stateful - proxy servers. Consider the example in Section 4. In this example, - the UAC executes the client transaction, and its outbound proxy - executes the server transaction. The outbound proxy also executes a - client transaction, which sends the request to a server transaction - in the inbound proxy. That proxy also executes a client transaction, - which in turn sends the request to a server transaction in the UAS. - This is shown in Figure 4. - - +---------+ +---------+ +---------+ +---------+ - | +-+|Request |+-+ +-+|Request |+-+ +-+|Request |+-+ | - | |C||------->||S| |C||------->||S| |C||------->||S| | - | |l|| ||e| |l|| ||e| |l|| ||e| | - | |i|| ||r| |i|| ||r| |i|| ||r| | - | |e|| ||v| |e|| ||v| |e|| ||v| | - | |n|| ||e| |n|| ||e| |n|| ||e| | - | |t|| ||r| |t|| ||r| |t|| ||r| | - | | || || | | || || | | || || | | - | |T|| ||T| |T|| ||T| |T|| ||T| | - | |r|| ||r| |r|| ||r| |r|| ||r| | - | |a|| ||a| |a|| ||a| |a|| ||a| | - | |n|| ||n| |n|| ||n| |n|| ||n| | - | |s||Response||s| |s||Response||s| |s||Response||s| | - | +-+|<-------|+-+ +-+|<-------|+-+ +-+|<-------|+-+ | - +---------+ +---------+ +---------+ +---------+ - UAC Outbound Inbound UAS - Proxy Proxy - - Figure 4: Transaction relationships - - A stateless proxy does not contain a client or server transaction. - The transaction exists between the UA or stateful proxy on one side, - and the UA or stateful proxy on the other side. As far as SIP - transactions are concerned, stateless proxies are effectively - transparent. The purpose of the client transaction is to receive a - request from the element in which the client is embedded (call this - element the "Transaction User" or TU; it can be a UA or a stateful - proxy), and reliably deliver the request to a server transaction. - - - -Rosenberg, et. al. Standards Track [Page 123] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The client transaction is also responsible for receiving responses - and delivering them to the TU, filtering out any response - retransmissions or disallowed responses (such as a response to ACK). - Additionally, in the case of an INVITE request, the client - transaction is responsible for generating the ACK request for any - final response accepting a 2xx response. - - Similarly, the purpose of the server transaction is to receive - requests from the transport layer and deliver them to the TU. The - server transaction filters any request retransmissions from the - network. The server transaction accepts responses from the TU and - delivers them to the transport layer for transmission over the - network. In the case of an INVITE transaction, it absorbs the ACK - request for any final response excepting a 2xx response. - - The 2xx response and its ACK receive special treatment. This - response is retransmitted only by a UAS, and its ACK generated only - by the UAC. This end-to-end treatment is needed so that a caller - knows the entire set of users that have accepted the call. Because - of this special handling, retransmissions of the 2xx response are - handled by the UA core, not the transaction layer. Similarly, - generation of the ACK for the 2xx is handled by the UA core. Each - proxy along the path merely forwards each 2xx response to INVITE and - its corresponding ACK. - -17.1 Client Transaction - - The client transaction provides its functionality through the - maintenance of a state machine. - - The TU communicates with the client transaction through a simple - interface. When the TU wishes to initiate a new transaction, it - creates a client transaction and passes it the SIP request to send - and an IP address, port, and transport to which to send it. The - client transaction begins execution of its state machine. Valid - responses are passed up to the TU from the client transaction. - - There are two types of client transaction state machines, depending - on the method of the request passed by the TU. One handles client - transactions for INVITE requests. This type of machine is referred - to as an INVITE client transaction. Another type handles client - transactions for all requests except INVITE and ACK. This is - referred to as a non-INVITE client transaction. There is no client - transaction for ACK. If the TU wishes to send an ACK, it passes one - directly to the transport layer for transmission. - - - - - - -Rosenberg, et. al. Standards Track [Page 124] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The INVITE transaction is different from those of other methods - because of its extended duration. Normally, human input is required - in order to respond to an INVITE. The long delays expected for - sending a response argue for a three-way handshake. On the other - hand, requests of other methods are expected to complete rapidly. - Because of the non-INVITE transaction's reliance on a two-way - handshake, TUs SHOULD respond immediately to non-INVITE requests. - -17.1.1 INVITE Client Transaction - -17.1.1.1 Overview of INVITE Transaction - - The INVITE transaction consists of a three-way handshake. The client - transaction sends an INVITE, the server transaction sends responses, - and the client transaction sends an ACK. For unreliable transports - (such as UDP), the client transaction retransmits requests at an - interval that starts at T1 seconds and doubles after every - retransmission. T1 is an estimate of the round-trip time (RTT), and - it defaults to 500 ms. Nearly all of the transaction timers - described here scale with T1, and changing T1 adjusts their values. - The request is not retransmitted over reliable transports. After - receiving a 1xx response, any retransmissions cease altogether, and - the client waits for further responses. The server transaction can - send additional 1xx responses, which are not transmitted reliably by - the server transaction. Eventually, the server transaction decides - to send a final response. For unreliable transports, that response - is retransmitted periodically, and for reliable transports, it is - sent once. For each final response that is received at the client - transaction, the client transaction sends an ACK, the purpose of - which is to quench retransmissions of the response. - -17.1.1.2 Formal Description - - The state machine for the INVITE client transaction is shown in - Figure 5. The initial state, "calling", MUST be entered when the TU - initiates a new client transaction with an INVITE request. The - client transaction MUST pass the request to the transport layer for - transmission (see Section 18). If an unreliable transport is being - used, the client transaction MUST start timer A with a value of T1. - If a reliable transport is being used, the client transaction SHOULD - NOT start timer A (Timer A controls request retransmissions). For - any transport, the client transaction MUST start timer B with a value - of 64*T1 seconds (Timer B controls transaction timeouts). - - When timer A fires, the client transaction MUST retransmit the - request by passing it to the transport layer, and MUST reset the - timer with a value of 2*T1. The formal definition of retransmit - - - - -Rosenberg, et. al. Standards Track [Page 125] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - within the context of the transaction layer is to take the message - previously sent to the transport layer and pass it to the transport - layer once more. - - When timer A fires 2*T1 seconds later, the request MUST be - retransmitted again (assuming the client transaction is still in this - state). This process MUST continue so that the request is - retransmitted with intervals that double after each transmission. - These retransmissions SHOULD only be done while the client - transaction is in the "calling" state. - - The default value for T1 is 500 ms. T1 is an estimate of the RTT - between the client and server transactions. Elements MAY (though it - is NOT RECOMMENDED) use smaller values of T1 within closed, private - networks that do not permit general Internet connection. T1 MAY be - chosen larger, and this is RECOMMENDED if it is known in advance - (such as on high latency access links) that the RTT is larger. - Whatever the value of T1, the exponential backoffs on retransmissions - described in this section MUST be used. - - If the client transaction is still in the "Calling" state when timer - B fires, the client transaction SHOULD inform the TU that a timeout - has occurred. The client transaction MUST NOT generate an ACK. The - value of 64*T1 is equal to the amount of time required to send seven - requests in the case of an unreliable transport. - - If the client transaction receives a provisional response while in - the "Calling" state, it transitions to the "Proceeding" state. In the - "Proceeding" state, the client transaction SHOULD NOT retransmit the - request any longer. Furthermore, the provisional response MUST be - passed to the TU. Any further provisional responses MUST be passed - up to the TU while in the "Proceeding" state. - - When in either the "Calling" or "Proceeding" states, reception of a - response with status code from 300-699 MUST cause the client - transaction to transition to "Completed". The client transaction - MUST pass the received response up to the TU, and the client - transaction MUST generate an ACK request, even if the transport is - reliable (guidelines for constructing the ACK from the response are - given in Section 17.1.1.3) and then pass the ACK to the transport - layer for transmission. The ACK MUST be sent to the same address, - port, and transport to which the original request was sent. The - client transaction SHOULD start timer D when it enters the - "Completed" state, with a value of at least 32 seconds for unreliable - transports, and a value of zero seconds for reliable transports. - Timer D reflects the amount of time that the server transaction can - remain in the "Completed" state when unreliable transports are used. - This is equal to Timer H in the INVITE server transaction, whose - - - -Rosenberg, et. al. Standards Track [Page 126] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - default is 64*T1. However, the client transaction does not know the - value of T1 in use by the server transaction, so an absolute minimum - of 32s is used instead of basing Timer D on T1. - - Any retransmissions of the final response that are received while in - the "Completed" state MUST cause the ACK to be re-passed to the - transport layer for retransmission, but the newly received response - MUST NOT be passed up to the TU. A retransmission of the response is - defined as any response which would match the same client transaction - based on the rules of Section 17.1.3. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 127] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - |INVITE from TU - Timer A fires |INVITE sent - Reset A, V Timer B fires - INVITE sent +-----------+ or Transport Err. - +---------| |---------------+inform TU - | | Calling | | - +-------->| |-------------->| - +-----------+ 2xx | - | | 2xx to TU | - | |1xx | - 300-699 +---------------+ |1xx to TU | - ACK sent | | | -resp. to TU | 1xx V | - | 1xx to TU -----------+ | - | +---------| | | - | | |Proceeding |-------------->| - | +-------->| | 2xx | - | +-----------+ 2xx to TU | - | 300-699 | | - | ACK sent, | | - | resp. to TU| | - | | | NOTE: - | 300-699 V | - | ACK sent +-----------+Transport Err. | transitions - | +---------| |Inform TU | labeled with - | | | Completed |-------------->| the event - | +-------->| | | over the action - | +-----------+ | to take - | ^ | | - | | | Timer D fires | - +--------------+ | - | - | | - V | - +-----------+ | - | | | - | Terminated|<--------------+ - | | - +-----------+ - - Figure 5: INVITE client transaction - - If timer D fires while the client transaction is in the "Completed" - state, the client transaction MUST move to the terminated state. - - When in either the "Calling" or "Proceeding" states, reception of a - 2xx response MUST cause the client transaction to enter the - "Terminated" state, and the response MUST be passed up to the TU. - The handling of this response depends on whether the TU is a proxy - - - -Rosenberg, et. al. Standards Track [Page 128] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - core or a UAC core. A UAC core will handle generation of the ACK for - this response, while a proxy core will always forward the 200 (OK) - upstream. The differing treatment of 200 (OK) between proxy and UAC - is the reason that handling of it does not take place in the - transaction layer. - - The client transaction MUST be destroyed the instant it enters the - "Terminated" state. This is actually necessary to guarantee correct - operation. The reason is that 2xx responses to an INVITE are treated - differently; each one is forwarded by proxies, and the ACK handling - in a UAC is different. Thus, each 2xx needs to be passed to a proxy - core (so that it can be forwarded) and to a UAC core (so it can be - acknowledged). No transaction layer processing takes place. - Whenever a response is received by the transport, if the transport - layer finds no matching client transaction (using the rules of - Section 17.1.3), the response is passed directly to the core. Since - the matching client transaction is destroyed by the first 2xx, - subsequent 2xx will find no match and therefore be passed to the - core. - -17.1.1.3 Construction of the ACK Request - - This section specifies the construction of ACK requests sent within - the client transaction. A UAC core that generates an ACK for 2xx - MUST instead follow the rules described in Section 13. - - The ACK request constructed by the client transaction MUST contain - values for the Call-ID, From, and Request-URI that are equal to the - values of those header fields in the request passed to the transport - by the client transaction (call this the "original request"). The To - header field in the ACK MUST equal the To header field in the - response being acknowledged, and therefore will usually differ from - the To header field in the original request by the addition of the - tag parameter. The ACK MUST contain a single Via header field, and - this MUST be equal to the top Via header field of the original - request. The CSeq header field in the ACK MUST contain the same - value for the sequence number as was present in the original request, - but the method parameter MUST be equal to "ACK". - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 129] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - If the INVITE request whose response is being acknowledged had Route - header fields, those header fields MUST appear in the ACK. This is - to ensure that the ACK can be routed properly through any downstream - stateless proxies. - - Although any request MAY contain a body, a body in an ACK is special - since the request cannot be rejected if the body is not understood. - Therefore, placement of bodies in ACK for non-2xx is NOT RECOMMENDED, - but if done, the body types are restricted to any that appeared in - the INVITE, assuming that the response to the INVITE was not 415. If - it was, the body in the ACK MAY be any type listed in the Accept - header field in the 415. - - For example, consider the following request: - - INVITE sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff - To: Bob - From: Alice ;tag=88sja8x - Max-Forwards: 70 - Call-ID: 987asjd97y7atg - CSeq: 986759 INVITE - - The ACK request for a non-2xx final response to this request would - look like this: - - ACK sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKkjshdyff - To: Bob ;tag=99sa0xk - From: Alice ;tag=88sja8x - Max-Forwards: 70 - Call-ID: 987asjd97y7atg - CSeq: 986759 ACK - -17.1.2 Non-INVITE Client Transaction - -17.1.2.1 Overview of the non-INVITE Transaction - - Non-INVITE transactions do not make use of ACK. They are simple - request-response interactions. For unreliable transports, requests - are retransmitted at an interval which starts at T1 and doubles until - it hits T2. If a provisional response is received, retransmissions - continue for unreliable transports, but at an interval of T2. The - server transaction retransmits the last response it sent, which can - be a provisional or final response, only when a retransmission of the - request is received. This is why request retransmissions need to - continue even after a provisional response; they are to ensure - reliable delivery of the final response. - - - -Rosenberg, et. al. Standards Track [Page 130] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Unlike an INVITE transaction, a non-INVITE transaction has no special - handling for the 2xx response. The result is that only a single 2xx - response to a non-INVITE is ever delivered to a UAC. - -17.1.2.2 Formal Description - - The state machine for the non-INVITE client transaction is shown in - Figure 6. It is very similar to the state machine for INVITE. - - The "Trying" state is entered when the TU initiates a new client - transaction with a request. When entering this state, the client - transaction SHOULD set timer F to fire in 64*T1 seconds. The request - MUST be passed to the transport layer for transmission. If an - unreliable transport is in use, the client transaction MUST set timer - E to fire in T1 seconds. If timer E fires while still in this state, - the timer is reset, but this time with a value of MIN(2*T1, T2). - When the timer fires again, it is reset to a MIN(4*T1, T2). This - process continues so that retransmissions occur with an exponentially - increasing interval that caps at T2. The default value of T2 is 4s, - and it represents the amount of time a non-INVITE server transaction - will take to respond to a request, if it does not respond - immediately. For the default values of T1 and T2, this results in - intervals of 500 ms, 1 s, 2 s, 4 s, 4 s, 4 s, etc. - - If Timer F fires while the client transaction is still in the - "Trying" state, the client transaction SHOULD inform the TU about the - timeout, and then it SHOULD enter the "Terminated" state. If a - provisional response is received while in the "Trying" state, the - response MUST be passed to the TU, and then the client transaction - SHOULD move to the "Proceeding" state. If a final response (status - codes 200-699) is received while in the "Trying" state, the response - MUST be passed to the TU, and the client transaction MUST transition - to the "Completed" state. - - If Timer E fires while in the "Proceeding" state, the request MUST be - passed to the transport layer for retransmission, and Timer E MUST be - reset with a value of T2 seconds. If timer F fires while in the - "Proceeding" state, the TU MUST be informed of a timeout, and the - client transaction MUST transition to the terminated state. If a - final response (status codes 200-699) is received while in the - "Proceeding" state, the response MUST be passed to the TU, and the - client transaction MUST transition to the "Completed" state. - - Once the client transaction enters the "Completed" state, it MUST set - Timer K to fire in T4 seconds for unreliable transports, and zero - seconds for reliable transports. The "Completed" state exists to - buffer any additional response retransmissions that may be received - (which is why the client transaction remains there only for - - - -Rosenberg, et. al. Standards Track [Page 131] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - unreliable transports). T4 represents the amount of time the network - will take to clear messages between client and server transactions. - The default value of T4 is 5s. A response is a retransmission when - it matches the same transaction, using the rules specified in Section - 17.1.3. If Timer K fires while in this state, the client transaction - MUST transition to the "Terminated" state. - - Once the transaction is in the terminated state, it MUST be destroyed - immediately. - -17.1.3 Matching Responses to Client Transactions - - When the transport layer in the client receives a response, it has to - determine which client transaction will handle the response, so that - the processing of Sections 17.1.1 and 17.1.2 can take place. The - branch parameter in the top Via header field is used for this - purpose. A response matches a client transaction under two - conditions: - - 1. If the response has the same value of the branch parameter in - the top Via header field as the branch parameter in the top - Via header field of the request that created the transaction. - - 2. If the method parameter in the CSeq header field matches the - method of the request that created the transaction. The - method is needed since a CANCEL request constitutes a - different transaction, but shares the same value of the branch - parameter. - - If a request is sent via multicast, it is possible that it will - generate multiple responses from different servers. These responses - will all have the same branch parameter in the topmost Via, but vary - in the To tag. The first response received, based on the rules - above, will be used, and others will be viewed as retransmissions. - That is not an error; multicast SIP provides only a rudimentary - "single-hop-discovery-like" service that is limited to processing a - single response. See Section 18.1.1 for details. - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 132] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -17.1.4 Handling Transport Errors - - |Request from TU - |send request - Timer E V - send request +-----------+ - +---------| |-------------------+ - | | Trying | Timer F | - +-------->| | or Transport Err.| - +-----------+ inform TU | - 200-699 | | | - resp. to TU | |1xx | - +---------------+ |resp. to TU | - | | | - | Timer E V Timer F | - | send req +-----------+ or Transport Err. | - | +---------| | inform TU | - | | |Proceeding |------------------>| - | +-------->| |-----+ | - | +-----------+ |1xx | - | | ^ |resp to TU | - | 200-699 | +--------+ | - | resp. to TU | | - | | | - | V | - | +-----------+ | - | | | | - | | Completed | | - | | | | - | +-----------+ | - | ^ | | - | | | Timer K | - +--------------+ | - | - | | - V | - NOTE: +-----------+ | - | | | - transitions | Terminated|<------------------+ - labeled with | | - the event +-----------+ - over the action - to take - - Figure 6: non-INVITE client transaction - - When the client transaction sends a request to the transport layer to - be sent, the following procedures are followed if the transport layer - indicates a failure. - - - -Rosenberg, et. al. Standards Track [Page 133] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The client transaction SHOULD inform the TU that a transport failure - has occurred, and the client transaction SHOULD transition directly - to the "Terminated" state. The TU will handle the failover - mechanisms described in [4]. - -17.2 Server Transaction - - The server transaction is responsible for the delivery of requests to - the TU and the reliable transmission of responses. It accomplishes - this through a state machine. Server transactions are created by the - core when a request is received, and transaction handling is desired - for that request (this is not always the case). - - As with the client transactions, the state machine depends on whether - the received request is an INVITE request. - -17.2.1 INVITE Server Transaction - - The state diagram for the INVITE server transaction is shown in - Figure 7. - - When a server transaction is constructed for a request, it enters the - "Proceeding" state. The server transaction MUST generate a 100 - (Trying) response unless it knows that the TU will generate a - provisional or final response within 200 ms, in which case it MAY - generate a 100 (Trying) response. This provisional response is - needed to quench request retransmissions rapidly in order to avoid - network congestion. The 100 (Trying) response is constructed - according to the procedures in Section 8.2.6, except that the - insertion of tags in the To header field of the response (when none - was present in the request) is downgraded from MAY to SHOULD NOT. - The request MUST be passed to the TU. - - The TU passes any number of provisional responses to the server - transaction. So long as the server transaction is in the - "Proceeding" state, each of these MUST be passed to the transport - layer for transmission. They are not sent reliably by the - transaction layer (they are not retransmitted by it) and do not cause - a change in the state of the server transaction. If a request - retransmission is received while in the "Proceeding" state, the most - recent provisional response that was received from the TU MUST be - passed to the transport layer for retransmission. A request is a - retransmission if it matches the same server transaction based on the - rules of Section 17.2.3. - - If, while in the "Proceeding" state, the TU passes a 2xx response to - the server transaction, the server transaction MUST pass this - response to the transport layer for transmission. It is not - - - -Rosenberg, et. al. Standards Track [Page 134] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - retransmitted by the server transaction; retransmissions of 2xx - responses are handled by the TU. The server transaction MUST then - transition to the "Terminated" state. - - While in the "Proceeding" state, if the TU passes a response with - status code from 300 to 699 to the server transaction, the response - MUST be passed to the transport layer for transmission, and the state - machine MUST enter the "Completed" state. For unreliable transports, - timer G is set to fire in T1 seconds, and is not set to fire for - reliable transports. - - This is a change from RFC 2543, where responses were always - retransmitted, even over reliable transports. - - When the "Completed" state is entered, timer H MUST be set to fire in - 64*T1 seconds for all transports. Timer H determines when the server - transaction abandons retransmitting the response. Its value is - chosen to equal Timer B, the amount of time a client transaction will - continue to retry sending a request. If timer G fires, the response - is passed to the transport layer once more for retransmission, and - timer G is set to fire in MIN(2*T1, T2) seconds. From then on, when - timer G fires, the response is passed to the transport again for - transmission, and timer G is reset with a value that doubles, unless - that value exceeds T2, in which case it is reset with the value of - T2. This is identical to the retransmit behavior for requests in the - "Trying" state of the non-INVITE client transaction. Furthermore, - while in the "Completed" state, if a request retransmission is - received, the server SHOULD pass the response to the transport for - retransmission. - - If an ACK is received while the server transaction is in the - "Completed" state, the server transaction MUST transition to the - "Confirmed" state. As Timer G is ignored in this state, any - retransmissions of the response will cease. - - If timer H fires while in the "Completed" state, it implies that the - ACK was never received. In this case, the server transaction MUST - transition to the "Terminated" state, and MUST indicate to the TU - that a transaction failure has occurred. - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 135] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - |INVITE - |pass INV to TU - INVITE V send 100 if TU won't in 200ms - send response+-----------+ - +--------| |--------+101-199 from TU - | | Proceeding| |send response - +------->| |<-------+ - | | Transport Err. - | | Inform TU - | |--------------->+ - +-----------+ | - 300-699 from TU | |2xx from TU | - send response | |send response | - | +------------------>+ - | | - INVITE V Timer G fires | - send response+-----------+ send response | - +--------| |--------+ | - | | Completed | | | - +------->| |<-------+ | - +-----------+ | - | | | - ACK | | | - - | +------------------>+ - | Timer H fires | - V or Transport Err.| - +-----------+ Inform TU | - | | | - | Confirmed | | - | | | - +-----------+ | - | | - |Timer I fires | - |- | - | | - V | - +-----------+ | - | | | - | Terminated|<---------------+ - | | - +-----------+ - - Figure 7: INVITE server transaction - - - - - - - - -Rosenberg, et. al. Standards Track [Page 136] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The purpose of the "Confirmed" state is to absorb any additional ACK - messages that arrive, triggered from retransmissions of the final - response. When this state is entered, timer I is set to fire in T4 - seconds for unreliable transports, and zero seconds for reliable - transports. Once timer I fires, the server MUST transition to the - "Terminated" state. - - Once the transaction is in the "Terminated" state, it MUST be - destroyed immediately. As with client transactions, this is needed - to ensure reliability of the 2xx responses to INVITE. - -17.2.2 Non-INVITE Server Transaction - - The state machine for the non-INVITE server transaction is shown in - Figure 8. - - The state machine is initialized in the "Trying" state and is passed - a request other than INVITE or ACK when initialized. This request is - passed up to the TU. Once in the "Trying" state, any further request - retransmissions are discarded. A request is a retransmission if it - matches the same server transaction, using the rules specified in - Section 17.2.3. - - While in the "Trying" state, if the TU passes a provisional response - to the server transaction, the server transaction MUST enter the - "Proceeding" state. The response MUST be passed to the transport - layer for transmission. Any further provisional responses that are - received from the TU while in the "Proceeding" state MUST be passed - to the transport layer for transmission. If a retransmission of the - request is received while in the "Proceeding" state, the most - recently sent provisional response MUST be passed to the transport - layer for retransmission. If the TU passes a final response (status - codes 200-699) to the server while in the "Proceeding" state, the - transaction MUST enter the "Completed" state, and the response MUST - be passed to the transport layer for transmission. - - When the server transaction enters the "Completed" state, it MUST set - Timer J to fire in 64*T1 seconds for unreliable transports, and zero - seconds for reliable transports. While in the "Completed" state, the - server transaction MUST pass the final response to the transport - layer for retransmission whenever a retransmission of the request is - received. Any other final responses passed by the TU to the server - transaction MUST be discarded while in the "Completed" state. The - server transaction remains in this state until Timer J fires, at - which point it MUST transition to the "Terminated" state. - - The server transaction MUST be destroyed the instant it enters the - "Terminated" state. - - - -Rosenberg, et. al. Standards Track [Page 137] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -17.2.3 Matching Requests to Server Transactions - - When a request is received from the network by the server, it has to - be matched to an existing transaction. This is accomplished in the - following manner. - - The branch parameter in the topmost Via header field of the request - is examined. If it is present and begins with the magic cookie - "z9hG4bK", the request was generated by a client transaction - compliant to this specification. Therefore, the branch parameter - will be unique across all transactions sent by that client. The - request matches a transaction if: - - 1. the branch parameter in the request is equal to the one in the - top Via header field of the request that created the - transaction, and - - 2. the sent-by value in the top Via of the request is equal to the - one in the request that created the transaction, and - - 3. the method of the request matches the one that created the - transaction, except for ACK, where the method of the request - that created the transaction is INVITE. - - This matching rule applies to both INVITE and non-INVITE transactions - alike. - - The sent-by value is used as part of the matching process because - there could be accidental or malicious duplication of branch - parameters from different clients. - - If the branch parameter in the top Via header field is not present, - or does not contain the magic cookie, the following procedures are - used. These exist to handle backwards compatibility with RFC 2543 - compliant implementations. - - The INVITE request matches a transaction if the Request-URI, To tag, - From tag, Call-ID, CSeq, and top Via header field match those of the - INVITE request which created the transaction. In this case, the - INVITE is a retransmission of the original one that created the - transaction. The ACK request matches a transaction if the Request- - URI, From tag, Call-ID, CSeq number (not the method), and top Via - header field match those of the INVITE request which created the - transaction, and the To tag of the ACK matches the To tag of the - response sent by the server transaction. Matching is done based on - the matching rules defined for each of those header fields. - Inclusion of the tag in the To header field in the ACK matching - process helps disambiguate ACK for 2xx from ACK for other responses - - - -Rosenberg, et. al. Standards Track [Page 138] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - at a proxy, which may have forwarded both responses (This can occur - in unusual conditions. Specifically, when a proxy forked a request, - and then crashes, the responses may be delivered to another proxy, - which might end up forwarding multiple responses upstream). An ACK - request that matches an INVITE transaction matched by a previous ACK - is considered a retransmission of that previous ACK. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 139] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - |Request received - |pass to TU - V - +-----------+ - | | - | Trying |-------------+ - | | | - +-----------+ |200-699 from TU - | |send response - |1xx from TU | - |send response | - | | - Request V 1xx from TU | - send response+-----------+send response| - +--------| |--------+ | - | | Proceeding| | | - +------->| |<-------+ | - +<--------------| | | - |Trnsprt Err +-----------+ | - |Inform TU | | - | | | - | |200-699 from TU | - | |send response | - | Request V | - | send response+-----------+ | - | +--------| | | - | | | Completed |<------------+ - | +------->| | - +<--------------| | - |Trnsprt Err +-----------+ - |Inform TU | - | |Timer J fires - | |- - | | - | V - | +-----------+ - | | | - +-------------->| Terminated| - | | - +-----------+ - - Figure 8: non-INVITE server transaction - - For all other request methods, a request is matched to a transaction - if the Request-URI, To tag, From tag, Call-ID, CSeq (including the - method), and top Via header field match those of the request that - created the transaction. Matching is done based on the matching - - - - -Rosenberg, et. al. Standards Track [Page 140] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - rules defined for each of those header fields. When a non-INVITE - request matches an existing transaction, it is a retransmission of - the request that created that transaction. - - Because the matching rules include the Request-URI, the server cannot - match a response to a transaction. When the TU passes a response to - the server transaction, it must pass it to the specific server - transaction for which the response is targeted. - -17.2.4 Handling Transport Errors - - When the server transaction sends a response to the transport layer - to be sent, the following procedures are followed if the transport - layer indicates a failure. - - First, the procedures in [4] are followed, which attempt to deliver - the response to a backup. If those should all fail, based on the - definition of failure in [4], the server transaction SHOULD inform - the TU that a failure has occurred, and SHOULD transition to the - terminated state. - -18 Transport - - The transport layer is responsible for the actual transmission of - requests and responses over network transports. This includes - determination of the connection to use for a request or response in - the case of connection-oriented transports. - - The transport layer is responsible for managing persistent - connections for transport protocols like TCP and SCTP, or TLS over - those, including ones opened to the transport layer. This includes - connections opened by the client or server transports, so that - connections are shared between client and server transport functions. - These connections are indexed by the tuple formed from the address, - port, and transport protocol at the far end of the connection. When - a connection is opened by the transport layer, this index is set to - the destination IP, port and transport. When the connection is - accepted by the transport layer, this index is set to the source IP - address, port number, and transport. Note that, because the source - port is often ephemeral, but it cannot be known whether it is - ephemeral or selected through procedures in [4], connections accepted - by the transport layer will frequently not be reused. The result is - that two proxies in a "peering" relationship using a connection- - oriented transport frequently will have two connections in use, one - for transactions initiated in each direction. - - - - - - -Rosenberg, et. al. Standards Track [Page 141] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - It is RECOMMENDED that connections be kept open for some - implementation-defined duration after the last message was sent or - received over that connection. This duration SHOULD at least equal - the longest amount of time the element would need in order to bring a - transaction from instantiation to the terminated state. This is to - make it likely that transactions are completed over the same - connection on which they are initiated (for example, request, - response, and in the case of INVITE, ACK for non-2xx responses). - This usually means at least 64*T1 (see Section 17.1.1.1 for a - definition of T1). However, it could be larger in an element that - has a TU using a large value for timer C (bullet 11 of Section 16.6), - for example. - - All SIP elements MUST implement UDP and TCP. SIP elements MAY - implement other protocols. - - Making TCP mandatory for the UA is a substantial change from RFC - 2543. It has arisen out of the need to handle larger messages, - which MUST use TCP, as discussed below. Thus, even if an element - never sends large messages, it may receive one and needs to be - able to handle them. - -18.1 Clients - -18.1.1 Sending Requests - - The client side of the transport layer is responsible for sending the - request and receiving responses. The user of the transport layer - passes the client transport the request, an IP address, port, - transport, and possibly TTL for multicast destinations. - - If a request is within 200 bytes of the path MTU, or if it is larger - than 1300 bytes and the path MTU is unknown, the request MUST be sent - using an RFC 2914 [43] congestion controlled transport protocol, such - as TCP. If this causes a change in the transport protocol from the - one indicated in the top Via, the value in the top Via MUST be - changed. This prevents fragmentation of messages over UDP and - provides congestion control for larger messages. However, - implementations MUST be able to handle messages up to the maximum - datagram packet size. For UDP, this size is 65,535 bytes, including - IP and UDP headers. - - The 200 byte "buffer" between the message size and the MTU - accommodates the fact that the response in SIP can be larger than - the request. This happens due to the addition of Record-Route - header field values to the responses to INVITE, for example. With - the extra buffer, the response can be about 170 bytes larger than - the request, and still not be fragmented on IPv4 (about 30 bytes - - - -Rosenberg, et. al. Standards Track [Page 142] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - is consumed by IP/UDP, assuming no IPSec). 1300 is chosen when - path MTU is not known, based on the assumption of a 1500 byte - Ethernet MTU. - - If an element sends a request over TCP because of these message size - constraints, and that request would have otherwise been sent over - UDP, if the attempt to establish the connection generates either an - ICMP Protocol Not Supported, or results in a TCP reset, the element - SHOULD retry the request, using UDP. This is only to provide - backwards compatibility with RFC 2543 compliant implementations that - do not support TCP. It is anticipated that this behavior will be - deprecated in a future revision of this specification. - - A client that sends a request to a multicast address MUST add the - "maddr" parameter to its Via header field value containing the - destination multicast address, and for IPv4, SHOULD add the "ttl" - parameter with a value of 1. Usage of IPv6 multicast is not defined - in this specification, and will be a subject of future - standardization when the need arises. - - These rules result in a purposeful limitation of multicast in SIP. - Its primary function is to provide a "single-hop-discovery-like" - service, delivering a request to a group of homogeneous servers, - where it is only required to process the response from any one of - them. This functionality is most useful for registrations. In fact, - based on the transaction processing rules in Section 17.1.3, the - client transaction will accept the first response, and view any - others as retransmissions because they all contain the same Via - branch identifier. - - Before a request is sent, the client transport MUST insert a value of - the "sent-by" field into the Via header field. This field contains - an IP address or host name, and port. The usage of an FQDN is - RECOMMENDED. This field is used for sending responses under certain - conditions, described below. If the port is absent, the default - value depends on the transport. It is 5060 for UDP, TCP and SCTP, - 5061 for TLS. - - For reliable transports, the response is normally sent on the - connection on which the request was received. Therefore, the client - transport MUST be prepared to receive the response on the same - connection used to send the request. Under error conditions, the - server may attempt to open a new connection to send the response. To - handle this case, the transport layer MUST also be prepared to - receive an incoming connection on the source IP address from which - the request was sent and port number in the "sent-by" field. It also - - - - - -Rosenberg, et. al. Standards Track [Page 143] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - MUST be prepared to receive incoming connections on any address and - port that would be selected by a server based on the procedures - described in Section 5 of [4]. - - For unreliable unicast transports, the client transport MUST be - prepared to receive responses on the source IP address from which the - request is sent (as responses are sent back to the source address) - and the port number in the "sent-by" field. Furthermore, as with - reliable transports, in certain cases the response will be sent - elsewhere. The client MUST be prepared to receive responses on any - address and port that would be selected by a server based on the - procedures described in Section 5 of [4]. - - For multicast, the client transport MUST be prepared to receive - responses on the same multicast group and port to which the request - is sent (that is, it needs to be a member of the multicast group it - sent the request to.) - - If a request is destined to an IP address, port, and transport to - which an existing connection is open, it is RECOMMENDED that this - connection be used to send the request, but another connection MAY be - opened and used. - - If a request is sent using multicast, it is sent to the group - address, port, and TTL provided by the transport user. If a request - is sent using unicast unreliable transports, it is sent to the IP - address and port provided by the transport user. - -18.1.2 Receiving Responses - - When a response is received, the client transport examines the top - Via header field value. If the value of the "sent-by" parameter in - that header field value does not correspond to a value that the - client transport is configured to insert into requests, the response - MUST be silently discarded. - - If there are any client transactions in existence, the client - transport uses the matching procedures of Section 17.1.3 to attempt - to match the response to an existing transaction. If there is a - match, the response MUST be passed to that transaction. Otherwise, - the response MUST be passed to the core (whether it be stateless - proxy, stateful proxy, or UA) for further processing. Handling of - these "stray" responses is dependent on the core (a proxy will - forward them, while a UA will discard, for example). - - - - - - - -Rosenberg, et. al. Standards Track [Page 144] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -18.2 Servers - -18.2.1 Receiving Requests - - A server SHOULD be prepared to receive requests on any IP address, - port and transport combination that can be the result of a DNS lookup - on a SIP or SIPS URI [4] that is handed out for the purposes of - communicating with that server. In this context, "handing out" - includes placing a URI in a Contact header field in a REGISTER - request or a redirect response, or in a Record-Route header field in - a request or response. A URI can also be "handed out" by placing it - on a web page or business card. It is also RECOMMENDED that a server - listen for requests on the default SIP ports (5060 for TCP and UDP, - 5061 for TLS over TCP) on all public interfaces. The typical - exception would be private networks, or when multiple server - instances are running on the same host. For any port and interface - that a server listens on for UDP, it MUST listen on that same port - and interface for TCP. This is because a message may need to be sent - using TCP, rather than UDP, if it is too large. As a result, the - converse is not true. A server need not listen for UDP on a - particular address and port just because it is listening on that same - address and port for TCP. There may, of course, be other reasons why - a server needs to listen for UDP on a particular address and port. - - When the server transport receives a request over any transport, it - MUST examine the value of the "sent-by" parameter in the top Via - header field value. If the host portion of the "sent-by" parameter - contains a domain name, or if it contains an IP address that differs - from the packet source address, the server MUST add a "received" - parameter to that Via header field value. This parameter MUST - contain the source address from which the packet was received. This - is to assist the server transport layer in sending the response, - since it must be sent to the source IP address from which the request - came. - - Consider a request received by the server transport which looks like, - in part: - - INVITE sip:bob@Biloxi.com SIP/2.0 - Via: SIP/2.0/UDP bobspc.biloxi.com:5060 - - The request is received with a source IP address of 192.0.2.4. - Before passing the request up, the transport adds a "received" - parameter, so that the request would look like, in part: - - INVITE sip:bob@Biloxi.com SIP/2.0 - Via: SIP/2.0/UDP bobspc.biloxi.com:5060;received=192.0.2.4 - - - - -Rosenberg, et. al. Standards Track [Page 145] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Next, the server transport attempts to match the request to a server - transaction. It does so using the matching rules described in - Section 17.2.3. If a matching server transaction is found, the - request is passed to that transaction for processing. If no match is - found, the request is passed to the core, which may decide to - construct a new server transaction for that request. Note that when - a UAS core sends a 2xx response to INVITE, the server transaction is - destroyed. This means that when the ACK arrives, there will be no - matching server transaction, and based on this rule, the ACK is - passed to the UAS core, where it is processed. - -18.2.2 Sending Responses - - The server transport uses the value of the top Via header field in - order to determine where to send a response. It MUST follow the - following process: - - o If the "sent-protocol" is a reliable transport protocol such as - TCP or SCTP, or TLS over those, the response MUST be sent using - the existing connection to the source of the original request - that created the transaction, if that connection is still open. - This requires the server transport to maintain an association - between server transactions and transport connections. If that - connection is no longer open, the server SHOULD open a - connection to the IP address in the "received" parameter, if - present, using the port in the "sent-by" value, or the default - port for that transport, if no port is specified. If that - connection attempt fails, the server SHOULD use the procedures - in [4] for servers in order to determine the IP address and - port to open the connection and send the response to. - - o Otherwise, if the Via header field value contains a "maddr" - parameter, the response MUST be forwarded to the address listed - there, using the port indicated in "sent-by", or port 5060 if - none is present. If the address is a multicast address, the - response SHOULD be sent using the TTL indicated in the "ttl" - parameter, or with a TTL of 1 if that parameter is not present. - - o Otherwise (for unreliable unicast transports), if the top Via - has a "received" parameter, the response MUST be sent to the - address in the "received" parameter, using the port indicated - in the "sent-by" value, or using port 5060 if none is specified - explicitly. If this fails, for example, elicits an ICMP "port - unreachable" response, the procedures of Section 5 of [4] - SHOULD be used to determine where to send the response. - - - - - - -Rosenberg, et. al. Standards Track [Page 146] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o Otherwise, if it is not receiver-tagged, the response MUST be - sent to the address indicated by the "sent-by" value, using the - procedures in Section 5 of [4]. - -18.3 Framing - - In the case of message-oriented transports (such as UDP), if the - message has a Content-Length header field, the message body is - assumed to contain that many bytes. If there are additional bytes in - the transport packet beyond the end of the body, they MUST be - discarded. If the transport packet ends before the end of the - message body, this is considered an error. If the message is a - response, it MUST be discarded. If the message is a request, the - element SHOULD generate a 400 (Bad Request) response. If the message - has no Content-Length header field, the message body is assumed to - end at the end of the transport packet. - - In the case of stream-oriented transports such as TCP, the Content- - Length header field indicates the size of the body. The Content- - Length header field MUST be used with stream oriented transports. - -18.4 Error Handling - - Error handling is independent of whether the message was a request or - response. - - If the transport user asks for a message to be sent over an - unreliable transport, and the result is an ICMP error, the behavior - depends on the type of ICMP error. Host, network, port or protocol - unreachable errors, or parameter problem errors SHOULD cause the - transport layer to inform the transport user of a failure in sending. - Source quench and TTL exceeded ICMP errors SHOULD be ignored. - - If the transport user asks for a request to be sent over a reliable - transport, and the result is a connection failure, the transport - layer SHOULD inform the transport user of a failure in sending. - -19 Common Message Components - - There are certain components of SIP messages that appear in various - places within SIP messages (and sometimes, outside of them) that - merit separate discussion. - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 147] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -19.1 SIP and SIPS Uniform Resource Indicators - - A SIP or SIPS URI identifies a communications resource. Like all - URIs, SIP and SIPS URIs may be placed in web pages, email messages, - or printed literature. They contain sufficient information to - initiate and maintain a communication session with the resource. - - Examples of communications resources include the following: - - o a user of an online service - - o an appearance on a multi-line phone - - o a mailbox on a messaging system - - o a PSTN number at a gateway service - - o a group (such as "sales" or "helpdesk") in an organization - - A SIPS URI specifies that the resource be contacted securely. This - means, in particular, that TLS is to be used between the UAC and the - domain that owns the URI. From there, secure communications are used - to reach the user, where the specific security mechanism depends on - the policy of the domain. Any resource described by a SIP URI can be - "upgraded" to a SIPS URI by just changing the scheme, if it is - desired to communicate with that resource securely. - -19.1.1 SIP and SIPS URI Components - - The "sip:" and "sips:" schemes follow the guidelines in RFC 2396 [5]. - They use a form similar to the mailto URL, allowing the specification - of SIP request-header fields and the SIP message-body. This makes it - possible to specify the subject, media type, or urgency of sessions - initiated by using a URI on a web page or in an email message. The - formal syntax for a SIP or SIPS URI is presented in Section 25. Its - general form, in the case of a SIP URI, is: - - sip:user:password@host:port;uri-parameters?headers - - The format for a SIPS URI is the same, except that the scheme is - "sips" instead of sip. These tokens, and some of the tokens in their - expansions, have the following meanings: - - user: The identifier of a particular resource at the host being - addressed. The term "host" in this context frequently refers - to a domain. The "userinfo" of a URI consists of this user - field, the password field, and the @ sign following them. The - userinfo part of a URI is optional and MAY be absent when the - - - -Rosenberg, et. al. Standards Track [Page 148] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - destination host does not have a notion of users or when the - host itself is the resource being identified. If the @ sign is - present in a SIP or SIPS URI, the user field MUST NOT be empty. - - If the host being addressed can process telephone numbers, for - instance, an Internet telephony gateway, a telephone- - subscriber field defined in RFC 2806 [9] MAY be used to - populate the user field. There are special escaping rules for - encoding telephone-subscriber fields in SIP and SIPS URIs - described in Section 19.1.2. - - password: A password associated with the user. While the SIP and - SIPS URI syntax allows this field to be present, its use is NOT - RECOMMENDED, because the passing of authentication information - in clear text (such as URIs) has proven to be a security risk - in almost every case where it has been used. For instance, - transporting a PIN number in this field exposes the PIN. - - Note that the password field is just an extension of the user - portion. Implementations not wishing to give special - significance to the password portion of the field MAY simply - treat "user:password" as a single string. - - host: The host providing the SIP resource. The host part contains - either a fully-qualified domain name or numeric IPv4 or IPv6 - address. Using the fully-qualified domain name form is - RECOMMENDED whenever possible. - - port: The port number where the request is to be sent. - - URI parameters: Parameters affecting a request constructed from - the URI. - - URI parameters are added after the hostport component and are - separated by semi-colons. - - URI parameters take the form: - - parameter-name "=" parameter-value - - Even though an arbitrary number of URI parameters may be - included in a URI, any given parameter-name MUST NOT appear - more than once. - - This extensible mechanism includes the transport, maddr, ttl, - user, method and lr parameters. - - - - - -Rosenberg, et. al. Standards Track [Page 149] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The transport parameter determines the transport mechanism to - be used for sending SIP messages, as specified in [4]. SIP can - use any network transport protocol. Parameter names are - defined for UDP (RFC 768 [14]), TCP (RFC 761 [15]), and SCTP - (RFC 2960 [16]). For a SIPS URI, the transport parameter MUST - indicate a reliable transport. - - The maddr parameter indicates the server address to be - contacted for this user, overriding any address derived from - the host field. When an maddr parameter is present, the port - and transport components of the URI apply to the address - indicated in the maddr parameter value. [4] describes the - proper interpretation of the transport, maddr, and hostport in - order to obtain the destination address, port, and transport - for sending a request. - - The maddr field has been used as a simple form of loose source - routing. It allows a URI to specify a proxy that must be - traversed en-route to the destination. Continuing to use the - maddr parameter this way is strongly discouraged (the - mechanisms that enable it are deprecated). Implementations - should instead use the Route mechanism described in this - document, establishing a pre-existing route set if necessary - (see Section 8.1.1.1). This provides a full URI to describe - the node to be traversed. - - The ttl parameter determines the time-to-live value of the UDP - multicast packet and MUST only be used if maddr is a multicast - address and the transport protocol is UDP. For example, to - specify a call to alice@atlanta.com using multicast to - 239.255.255.1 with a ttl of 15, the following URI would be - used: - - sip:alice@atlanta.com;maddr=239.255.255.1;ttl=15 - - The set of valid telephone-subscriber strings is a subset of - valid user strings. The user URI parameter exists to - distinguish telephone numbers from user names that happen to - look like telephone numbers. If the user string contains a - telephone number formatted as a telephone-subscriber, the user - parameter value "phone" SHOULD be present. Even without this - parameter, recipients of SIP and SIPS URIs MAY interpret the - pre-@ part as a telephone number if local restrictions on the - name space for user name allow it. - - The method of the SIP request constructed from the URI can be - specified with the method parameter. - - - - -Rosenberg, et. al. Standards Track [Page 150] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The lr parameter, when present, indicates that the element - responsible for this resource implements the routing mechanisms - specified in this document. This parameter will be used in the - URIs proxies place into Record-Route header field values, and - may appear in the URIs in a pre-existing route set. - - This parameter is used to achieve backwards compatibility with - systems implementing the strict-routing mechanisms of RFC 2543 - and the rfc2543bis drafts up to bis-05. An element preparing - to send a request based on a URI not containing this parameter - can assume the receiving element implements strict-routing and - reformat the message to preserve the information in the - Request-URI. - - Since the uri-parameter mechanism is extensible, SIP elements - MUST silently ignore any uri-parameters that they do not - understand. - - Headers: Header fields to be included in a request constructed - from the URI. - - Headers fields in the SIP request can be specified with the "?" - mechanism within a URI. The header names and values are - encoded in ampersand separated hname = hvalue pairs. The - special hname "body" indicates that the associated hvalue is - the message-body of the SIP request. - - Table 1 summarizes the use of SIP and SIPS URI components based on - the context in which the URI appears. The external column describes - URIs appearing anywhere outside of a SIP message, for instance on a - web page or business card. Entries marked "m" are mandatory, those - marked "o" are optional, and those marked "-" are not allowed. - Elements processing URIs SHOULD ignore any disallowed components if - they are present. The second column indicates the default value of - an optional element if it is not present. "--" indicates that the - element is either not optional, or has no default value. - - URIs in Contact header fields have different restrictions depending - on the context in which the header field appears. One set applies to - messages that establish and maintain dialogs (INVITE and its 200 (OK) - response). The other applies to registration and redirection - messages (REGISTER, its 200 (OK) response, and 3xx class responses to - any method). - - - - - - - - -Rosenberg, et. al. Standards Track [Page 151] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -19.1.2 Character Escaping Requirements - - dialog - reg./redir. Contact/ - default Req.-URI To From Contact R-R/Route external -user -- o o o o o o -password -- o o o o o o -host -- m m m m m m -port (1) o - - o o o -user-param ip o o o o o o -method INVITE - - - - - o -maddr-param -- o - - o o o -ttl-param 1 o - - o - o -transp.-param (2) o - - o o o -lr-param -- o - - - o o -other-param -- o o o o o o -headers -- - - - o - o - - (1): The default port value is transport and scheme dependent. The - default is 5060 for sip: using UDP, TCP, or SCTP. The default is - 5061 for sip: using TLS over TCP and sips: over TCP. - - (2): The default transport is scheme dependent. For sip:, it is UDP. - For sips:, it is TCP. - - Table 1: Use and default values of URI components for SIP header - field values, Request-URI and references - - SIP follows the requirements and guidelines of RFC 2396 [5] when - defining the set of characters that must be escaped in a SIP URI, and - uses its ""%" HEX HEX" mechanism for escaping. From RFC 2396 [5]: - - The set of characters actually reserved within any given URI - component is defined by that component. In general, a character - is reserved if the semantics of the URI changes if the character - is replaced with its escaped US-ASCII encoding [5]. Excluded US- - ASCII characters (RFC 2396 [5]), such as space and control - characters and characters used as URI delimiters, also MUST be - escaped. URIs MUST NOT contain unescaped space and control - characters. - - For each component, the set of valid BNF expansions defines exactly - which characters may appear unescaped. All other characters MUST be - escaped. - - For example, "@" is not in the set of characters in the user - component, so the user "j@s0n" must have at least the @ sign encoded, - as in "j%40s0n". - - - -Rosenberg, et. al. Standards Track [Page 152] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Expanding the hname and hvalue tokens in Section 25 show that all URI - reserved characters in header field names and values MUST be escaped. - - The telephone-subscriber subset of the user component has special - escaping considerations. The set of characters not reserved in the - RFC 2806 [9] description of telephone-subscriber contains a number of - characters in various syntax elements that need to be escaped when - used in SIP URIs. Any characters occurring in a telephone-subscriber - that do not appear in an expansion of the BNF for the user rule MUST - be escaped. - - Note that character escaping is not allowed in the host component of - a SIP or SIPS URI (the % character is not valid in its expansion). - This is likely to change in the future as requirements for - Internationalized Domain Names are finalized. Current - implementations MUST NOT attempt to improve robustness by treating - received escaped characters in the host component as literally - equivalent to their unescaped counterpart. The behavior required to - meet the requirements of IDN may be significantly different. - -19.1.3 Example SIP and SIPS URIs - - sip:alice@atlanta.com - sip:alice:secretword@atlanta.com;transport=tcp - sips:alice@atlanta.com?subject=project%20x&priority=urgent - sip:+1-212-555-1212:1234@gateway.com;user=phone - sips:1212@gateway.com - sip:alice@192.0.2.4 - sip:atlanta.com;method=REGISTER?to=alice%40atlanta.com - sip:alice;day=tuesday@atlanta.com - - The last sample URI above has a user field value of - "alice;day=tuesday". The escaping rules defined above allow a - semicolon to appear unescaped in this field. For the purposes of - this protocol, the field is opaque. The structure of that value is - only useful to the SIP element responsible for the resource. - -19.1.4 URI Comparison - - Some operations in this specification require determining whether two - SIP or SIPS URIs are equivalent. In this specification, registrars - need to compare bindings in Contact URIs in REGISTER requests (see - Section 10.3.). SIP and SIPS URIs are compared for equality - according to the following rules: - - o A SIP and SIPS URI are never equivalent. - - - - - -Rosenberg, et. al. Standards Track [Page 153] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o Comparison of the userinfo of SIP and SIPS URIs is case- - sensitive. This includes userinfo containing passwords or - formatted as telephone-subscribers. Comparison of all other - components of the URI is case-insensitive unless explicitly - defined otherwise. - - o The ordering of parameters and header fields is not significant - in comparing SIP and SIPS URIs. - - o Characters other than those in the "reserved" set (see RFC 2396 - [5]) are equivalent to their ""%" HEX HEX" encoding. - - o An IP address that is the result of a DNS lookup of a host name - does not match that host name. - - o For two URIs to be equal, the user, password, host, and port - components must match. - - A URI omitting the user component will not match a URI that - includes one. A URI omitting the password component will not - match a URI that includes one. - - A URI omitting any component with a default value will not - match a URI explicitly containing that component with its - default value. For instance, a URI omitting the optional port - component will not match a URI explicitly declaring port 5060. - The same is true for the transport-parameter, ttl-parameter, - user-parameter, and method components. - - Defining sip:user@host to not be equivalent to - sip:user@host:5060 is a change from RFC 2543. When deriving - addresses from URIs, equivalent addresses are expected from - equivalent URIs. The URI sip:user@host:5060 will always - resolve to port 5060. The URI sip:user@host may resolve to - other ports through the DNS SRV mechanisms detailed in [4]. - - o URI uri-parameter components are compared as follows: - - - Any uri-parameter appearing in both URIs must match. - - - A user, ttl, or method uri-parameter appearing in only one - URI never matches, even if it contains the default value. - - - A URI that includes an maddr parameter will not match a URI - that contains no maddr parameter. - - - All other uri-parameters appearing in only one URI are - ignored when comparing the URIs. - - - -Rosenberg, et. al. Standards Track [Page 154] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o URI header components are never ignored. Any present header - component MUST be present in both URIs and match for the URIs - to match. The matching rules are defined for each header field - in Section 20. - - The URIs within each of the following sets are equivalent: - - sip:%61lice@atlanta.com;transport=TCP - sip:alice@AtLanTa.CoM;Transport=tcp - - sip:carol@chicago.com - sip:carol@chicago.com;newparam=5 - sip:carol@chicago.com;security=on - - sip:biloxi.com;transport=tcp;method=REGISTER?to=sip:bob%40biloxi.com - sip:biloxi.com;method=REGISTER;transport=tcp?to=sip:bob%40biloxi.com - - sip:alice@atlanta.com?subject=project%20x&priority=urgent - sip:alice@atlanta.com?priority=urgent&subject=project%20x - - The URIs within each of the following sets are not equivalent: - - SIP:ALICE@AtLanTa.CoM;Transport=udp (different usernames) - sip:alice@AtLanTa.CoM;Transport=UDP - - sip:bob@biloxi.com (can resolve to different ports) - sip:bob@biloxi.com:5060 - - sip:bob@biloxi.com (can resolve to different transports) - sip:bob@biloxi.com;transport=udp - - sip:bob@biloxi.com (can resolve to different port and transports) - sip:bob@biloxi.com:6000;transport=tcp - - sip:carol@chicago.com (different header component) - sip:carol@chicago.com?Subject=next%20meeting - - sip:bob@phone21.boxesbybob.com (even though that's what - sip:bob@192.0.2.4 phone21.boxesbybob.com resolves to) - - Note that equality is not transitive: - - o sip:carol@chicago.com and sip:carol@chicago.com;security=on are - equivalent - - o sip:carol@chicago.com and sip:carol@chicago.com;security=off - are equivalent - - - - -Rosenberg, et. al. Standards Track [Page 155] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o sip:carol@chicago.com;security=on and - sip:carol@chicago.com;security=off are not equivalent - -19.1.5 Forming Requests from a URI - - An implementation needs to take care when forming requests directly - from a URI. URIs from business cards, web pages, and even from - sources inside the protocol such as registered contacts may contain - inappropriate header fields or body parts. - - An implementation MUST include any provided transport, maddr, ttl, or - user parameter in the Request-URI of the formed request. If the URI - contains a method parameter, its value MUST be used as the method of - the request. The method parameter MUST NOT be placed in the - Request-URI. Unknown URI parameters MUST be placed in the message's - Request-URI. - - An implementation SHOULD treat the presence of any headers or body - parts in the URI as a desire to include them in the message, and - choose to honor the request on a per-component basis. - - An implementation SHOULD NOT honor these obviously dangerous header - fields: From, Call-ID, CSeq, Via, and Record-Route. - - An implementation SHOULD NOT honor any requested Route header field - values in order to not be used as an unwitting agent in malicious - attacks. - - An implementation SHOULD NOT honor requests to include header fields - that may cause it to falsely advertise its location or capabilities. - These include: Accept, Accept-Encoding, Accept-Language, Allow, - Contact (in its dialog usage), Organization, Supported, and User- - Agent. - - An implementation SHOULD verify the accuracy of any requested - descriptive header fields, including: Content-Disposition, Content- - Encoding, Content-Language, Content-Length, Content-Type, Date, - Mime-Version, and Timestamp. - - If the request formed from constructing a message from a given URI is - not a valid SIP request, the URI is invalid. An implementation MUST - NOT proceed with transmitting the request. It should instead pursue - the course of action due an invalid URI in the context it occurs. - - The constructed request can be invalid in many ways. These - include, but are not limited to, syntax error in header fields, - invalid combinations of URI parameters, or an incorrect - description of the message body. - - - -Rosenberg, et. al. Standards Track [Page 156] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Sending a request formed from a given URI may require capabilities - unavailable to the implementation. The URI might indicate use of an - unimplemented transport or extension, for example. An implementation - SHOULD refuse to send these requests rather than modifying them to - match their capabilities. An implementation MUST NOT send a request - requiring an extension that it does not support. - - For example, such a request can be formed through the presence of - a Require header parameter or a method URI parameter with an - unknown or explicitly unsupported value. - -19.1.6 Relating SIP URIs and tel URLs - - When a tel URL (RFC 2806 [9]) is converted to a SIP or SIPS URI, the - entire telephone-subscriber portion of the tel URL, including any - parameters, is placed into the userinfo part of the SIP or SIPS URI. - - Thus, tel:+358-555-1234567;postd=pp22 becomes - - sip:+358-555-1234567;postd=pp22@foo.com;user=phone - - or - sips:+358-555-1234567;postd=pp22@foo.com;user=phone - - not - sip:+358-555-1234567@foo.com;postd=pp22;user=phone - - or - - sips:+358-555-1234567@foo.com;postd=pp22;user=phone - - In general, equivalent "tel" URLs converted to SIP or SIPS URIs in - this fashion may not produce equivalent SIP or SIPS URIs. The - userinfo of SIP and SIPS URIs are compared as a case-sensitive - string. Variance in case-insensitive portions of tel URLs and - reordering of tel URL parameters does not affect tel URL equivalence, - but does affect the equivalence of SIP URIs formed from them. - - For example, - - tel:+358-555-1234567;postd=pp22 - tel:+358-555-1234567;POSTD=PP22 - - are equivalent, while - - sip:+358-555-1234567;postd=pp22@foo.com;user=phone - sip:+358-555-1234567;POSTD=PP22@foo.com;user=phone - - - - -Rosenberg, et. al. Standards Track [Page 157] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - are not. - - Likewise, - - tel:+358-555-1234567;postd=pp22;isub=1411 - tel:+358-555-1234567;isub=1411;postd=pp22 - - are equivalent, while - - sip:+358-555-1234567;postd=pp22;isub=1411@foo.com;user=phone - sip:+358-555-1234567;isub=1411;postd=pp22@foo.com;user=phone - - are not. - - To mitigate this problem, elements constructing telephone-subscriber - fields to place in the userinfo part of a SIP or SIPS URI SHOULD fold - any case-insensitive portion of telephone-subscriber to lower case, - and order the telephone-subscriber parameters lexically by parameter - name, excepting isdn-subaddress and post-dial, which occur first and - in that order. (All components of a tel URL except for future- - extension parameters are defined to be compared case-insensitive.) - - Following this suggestion, both - - tel:+358-555-1234567;postd=pp22 - tel:+358-555-1234567;POSTD=PP22 - - become - - sip:+358-555-1234567;postd=pp22@foo.com;user=phone - - and both - - tel:+358-555-1234567;tsp=a.b;phone-context=5 - tel:+358-555-1234567;phone-context=5;tsp=a.b - - become - - sip:+358-555-1234567;phone-context=5;tsp=a.b@foo.com;user=phone - -19.2 Option Tags - - Option tags are unique identifiers used to designate new options - (extensions) in SIP. These tags are used in Require (Section 20.32), - Proxy-Require (Section 20.29), Supported (Section 20.37) and - Unsupported (Section 20.40) header fields. Note that these options - appear as parameters in those header fields in an option-tag = token - form (see Section 25 for the definition of token). - - - -Rosenberg, et. al. Standards Track [Page 158] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Option tags are defined in standards track RFCs. This is a change - from past practice, and is instituted to ensure continuing multi- - vendor interoperability (see discussion in Section 20.32 and Section - 20.37). An IANA registry of option tags is used to ensure easy - reference. - -19.3 Tags - - The "tag" parameter is used in the To and From header fields of SIP - messages. It serves as a general mechanism to identify a dialog, - which is the combination of the Call-ID along with two tags, one from - each participant in the dialog. When a UA sends a request outside of - a dialog, it contains a From tag only, providing "half" of the dialog - ID. The dialog is completed from the response(s), each of which - contributes the second half in the To header field. The forking of - SIP requests means that multiple dialogs can be established from a - single request. This also explains the need for the two-sided dialog - identifier; without a contribution from the recipients, the - originator could not disambiguate the multiple dialogs established - from a single request. - - When a tag is generated by a UA for insertion into a request or - response, it MUST be globally unique and cryptographically random - with at least 32 bits of randomness. A property of this selection - requirement is that a UA will place a different tag into the From - header of an INVITE than it would place into the To header of the - response to the same INVITE. This is needed in order for a UA to - invite itself to a session, a common case for "hairpinning" of calls - in PSTN gateways. Similarly, two INVITEs for different calls will - have different From tags, and two responses for different calls will - have different To tags. - - Besides the requirement for global uniqueness, the algorithm for - generating a tag is implementation-specific. Tags are helpful in - fault tolerant systems, where a dialog is to be recovered on an - alternate server after a failure. A UAS can select the tag in such a - way that a backup can recognize a request as part of a dialog on the - failed server, and therefore determine that it should attempt to - recover the dialog and any other state associated with it. - -20 Header Fields - - The general syntax for header fields is covered in Section 7.3. This - section lists the full set of header fields along with notes on - syntax, meaning, and usage. Throughout this section, we use [HX.Y] - to refer to Section X.Y of the current HTTP/1.1 specification RFC - 2616 [8]. Examples of each header field are given. - - - - -Rosenberg, et. al. Standards Track [Page 159] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Information about header fields in relation to methods and proxy - processing is summarized in Tables 2 and 3. - - The "where" column describes the request and response types in which - the header field can be used. Values in this column are: - - R: header field may only appear in requests; - - r: header field may only appear in responses; - - 2xx, 4xx, etc.: A numerical value or range indicates response - codes with which the header field can be used; - - c: header field is copied from the request to the response. - - An empty entry in the "where" column indicates that the header - field may be present in all requests and responses. - - The "proxy" column describes the operations a proxy may perform on a - header field: - - a: A proxy can add or concatenate the header field if not present. - - m: A proxy can modify an existing header field value. - - d: A proxy can delete a header field value. - - r: A proxy must be able to read the header field, and thus this - header field cannot be encrypted. - - The next six columns relate to the presence of a header field in a - method: - - c: Conditional; requirements on the header field depend on the - context of the message. - - m: The header field is mandatory. - - m*: The header field SHOULD be sent, but clients/servers need to - be prepared to receive messages without that header field. - - o: The header field is optional. - - t: The header field SHOULD be sent, but clients/servers need to be - prepared to receive messages without that header field. - - If a stream-based protocol (such as TCP) is used as a - transport, then the header field MUST be sent. - - - -Rosenberg, et. al. Standards Track [Page 160] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - *: The header field is required if the message body is not empty. - See Sections 20.14, 20.15 and 7.4 for details. - - -: The header field is not applicable. - - "Optional" means that an element MAY include the header field in a - request or response, and a UA MAY ignore the header field if present - in the request or response (The exception to this rule is the Require - header field discussed in 20.32). A "mandatory" header field MUST be - present in a request, and MUST be understood by the UAS receiving the - request. A mandatory response header field MUST be present in the - response, and the header field MUST be understood by the UAC - processing the response. "Not applicable" means that the header - field MUST NOT be present in a request. If one is placed in a - request by mistake, it MUST be ignored by the UAS receiving the - request. Similarly, a header field labeled "not applicable" for a - response means that the UAS MUST NOT place the header field in the - response, and the UAC MUST ignore the header field in the response. - - A UA SHOULD ignore extension header parameters that are not - understood. - - A compact form of some common header field names is also defined for - use when overall message size is an issue. - - The Contact, From, and To header fields contain a URI. If the URI - contains a comma, question mark or semicolon, the URI MUST be - enclosed in angle brackets (< and >). Any URI parameters are - contained within these brackets. If the URI is not enclosed in angle - brackets, any semicolon-delimited parameters are header-parameters, - not URI parameters. - -20.1 Accept - - The Accept header field follows the syntax defined in [H14.1]. The - semantics are also identical, with the exception that if no Accept - header field is present, the server SHOULD assume a default value of - application/sdp. - - An empty Accept header field means that no formats are acceptable. - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 161] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example: - - Header field where proxy ACK BYE CAN INV OPT REG - ___________________________________________________________ - Accept R - o - o m* o - Accept 2xx - - - o m* o - Accept 415 - c - c c c - Accept-Encoding R - o - o o o - Accept-Encoding 2xx - - - o m* o - Accept-Encoding 415 - c - c c c - Accept-Language R - o - o o o - Accept-Language 2xx - - - o m* o - Accept-Language 415 - c - c c c - Alert-Info R ar - - - o - - - Alert-Info 180 ar - - - o - - - Allow R - o - o o o - Allow 2xx - o - m* m* o - Allow r - o - o o o - Allow 405 - m - m m m - Authentication-Info 2xx - o - o o o - Authorization R o o o o o o - Call-ID c r m m m m m m - Call-Info ar - - - o o o - Contact R o - - m o o - Contact 1xx - - - o - - - Contact 2xx - - - m o o - Contact 3xx d - o - o o o - Contact 485 - o - o o o - Content-Disposition o o - o o o - Content-Encoding o o - o o o - Content-Language o o - o o o - Content-Length ar t t t t t t - Content-Type * * - * * * - CSeq c r m m m m m m - Date a o o o o o o - Error-Info 300-699 a - o o o o o - Expires - - - o - o - From c r m m m m m m - In-Reply-To R - - - o - - - Max-Forwards R amr m m m m m m - Min-Expires 423 - - - - - m - MIME-Version o o - o o o - Organization ar - - - o o o - - Table 2: Summary of header fields, A--O - - - - - - -Rosenberg, et. al. Standards Track [Page 162] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Header field where proxy ACK BYE CAN INV OPT REG - ___________________________________________________________________ - Priority R ar - - - o - - - Proxy-Authenticate 407 ar - m - m m m - Proxy-Authenticate 401 ar - o o o o o - Proxy-Authorization R dr o o - o o o - Proxy-Require R ar - o - o o o - Record-Route R ar o o o o o - - Record-Route 2xx,18x mr - o o o o - - Reply-To - - - o - - - Require ar - c - c c c - Retry-After 404,413,480,486 - o o o o o - 500,503 - o o o o o - 600,603 - o o o o o - Route R adr c c c c c c - Server r - o o o o o - Subject R - - - o - - - Supported R - o o m* o o - Supported 2xx - o o m* m* o - Timestamp o o o o o o - To c(1) r m m m m m m - Unsupported 420 - m - m m m - User-Agent o o o o o o - Via R amr m m m m m m - Via rc dr m m m m m m - Warning r - o o o o o - WWW-Authenticate 401 ar - m - m m m - WWW-Authenticate 407 ar - o - o o o - - Table 3: Summary of header fields, P--Z; (1): copied with possible - addition of tag - - Accept: application/sdp;level=1, application/x-private, text/html - -20.2 Accept-Encoding - - The Accept-Encoding header field is similar to Accept, but restricts - the content-codings [H3.5] that are acceptable in the response. See - [H14.3]. The semantics in SIP are identical to those defined in - [H14.3]. - - An empty Accept-Encoding header field is permissible. It is - equivalent to Accept-Encoding: identity, that is, only the identity - encoding, meaning no encoding, is permissible. - - If no Accept-Encoding header field is present, the server SHOULD - assume a default value of identity. - - - - -Rosenberg, et. al. Standards Track [Page 163] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - This differs slightly from the HTTP definition, which indicates that - when not present, any encoding can be used, but the identity encoding - is preferred. - - Example: - - Accept-Encoding: gzip - -20.3 Accept-Language - - The Accept-Language header field is used in requests to indicate the - preferred languages for reason phrases, session descriptions, or - status responses carried as message bodies in the response. If no - Accept-Language header field is present, the server SHOULD assume all - languages are acceptable to the client. - - The Accept-Language header field follows the syntax defined in - [H14.4]. The rules for ordering the languages based on the "q" - parameter apply to SIP as well. - - Example: - - Accept-Language: da, en-gb;q=0.8, en;q=0.7 - -20.4 Alert-Info - - When present in an INVITE request, the Alert-Info header field - specifies an alternative ring tone to the UAS. When present in a 180 - (Ringing) response, the Alert-Info header field specifies an - alternative ringback tone to the UAC. A typical usage is for a proxy - to insert this header field to provide a distinctive ring feature. - - The Alert-Info header field can introduce security risks. These - risks and the ways to handle them are discussed in Section 20.9, - which discusses the Call-Info header field since the risks are - identical. - - In addition, a user SHOULD be able to disable this feature - selectively. - - This helps prevent disruptions that could result from the use of - this header field by untrusted elements. - - Example: - - Alert-Info: - - - - - -Rosenberg, et. al. Standards Track [Page 164] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -20.5 Allow - - The Allow header field lists the set of methods supported by the UA - generating the message. - - All methods, including ACK and CANCEL, understood by the UA MUST be - included in the list of methods in the Allow header field, when - present. The absence of an Allow header field MUST NOT be - interpreted to mean that the UA sending the message supports no - methods. Rather, it implies that the UA is not providing any - information on what methods it supports. - - Supplying an Allow header field in responses to methods other than - OPTIONS reduces the number of messages needed. - - Example: - - Allow: INVITE, ACK, OPTIONS, CANCEL, BYE - -20.6 Authentication-Info - - The Authentication-Info header field provides for mutual - authentication with HTTP Digest. A UAS MAY include this header field - in a 2xx response to a request that was successfully authenticated - using digest based on the Authorization header field. - - Syntax and semantics follow those specified in RFC 2617 [17]. - - Example: - - Authentication-Info: nextnonce="47364c23432d2e131a5fb210812c" - -20.7 Authorization - - The Authorization header field contains authentication credentials of - a UA. Section 22.2 overviews the use of the Authorization header - field, and Section 22.4 describes the syntax and semantics when used - with HTTP authentication. - - This header field, along with Proxy-Authorization, breaks the general - rules about multiple header field values. Although not a comma- - separated list, this header field name may be present multiple times, - and MUST NOT be combined into a single header line using the usual - rules described in Section 7.3. - - - - - - - -Rosenberg, et. al. Standards Track [Page 165] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - In the example below, there are no quotes around the Digest - parameter: - - Authorization: Digest username="Alice", realm="atlanta.com", - nonce="84a4cc6f3082121f32b42a2187831a9e", - response="7587245234b3434cc3412213e5f113a5432" - -20.8 Call-ID - - The Call-ID header field uniquely identifies a particular invitation - or all registrations of a particular client. A single multimedia - conference can give rise to several calls with different Call-IDs, - for example, if a user invites a single individual several times to - the same (long-running) conference. Call-IDs are case-sensitive and - are simply compared byte-by-byte. - - The compact form of the Call-ID header field is i. - - Examples: - - Call-ID: f81d4fae-7dec-11d0-a765-00a0c91e6bf6@biloxi.com - i:f81d4fae-7dec-11d0-a765-00a0c91e6bf6@192.0.2.4 - -20.9 Call-Info - - The Call-Info header field provides additional information about the - caller or callee, depending on whether it is found in a request or - response. The purpose of the URI is described by the "purpose" - parameter. The "icon" parameter designates an image suitable as an - iconic representation of the caller or callee. The "info" parameter - describes the caller or callee in general, for example, through a web - page. The "card" parameter provides a business card, for example, in - vCard [36] or LDIF [37] formats. Additional tokens can be registered - using IANA and the procedures in Section 27. - - Use of the Call-Info header field can pose a security risk. If a - callee fetches the URIs provided by a malicious caller, the callee - may be at risk for displaying inappropriate or offensive content, - dangerous or illegal content, and so on. Therefore, it is - RECOMMENDED that a UA only render the information in the Call-Info - header field if it can verify the authenticity of the element that - originated the header field and trusts that element. This need not - be the peer UA; a proxy can insert this header field into requests. - - Example: - - Call-Info: ;purpose=icon, - ;purpose=info - - - -Rosenberg, et. al. Standards Track [Page 166] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -20.10 Contact - - A Contact header field value provides a URI whose meaning depends on - the type of request or response it is in. - - A Contact header field value can contain a display name, a URI with - URI parameters, and header parameters. - - This document defines the Contact parameters "q" and "expires". - These parameters are only used when the Contact is present in a - REGISTER request or response, or in a 3xx response. Additional - parameters may be defined in other specifications. - - When the header field value contains a display name, the URI - including all URI parameters is enclosed in "<" and ">". If no "<" - and ">" are present, all parameters after the URI are header - parameters, not URI parameters. The display name can be tokens, or a - quoted string, if a larger character set is desired. - - Even if the "display-name" is empty, the "name-addr" form MUST be - used if the "addr-spec" contains a comma, semicolon, or question - mark. There may or may not be LWS between the display-name and the - "<". - - These rules for parsing a display name, URI and URI parameters, and - header parameters also apply for the header fields To and From. - - The Contact header field has a role similar to the Location header - field in HTTP. However, the HTTP header field only allows one - address, unquoted. Since URIs can contain commas and semicolons - as reserved characters, they can be mistaken for header or - parameter delimiters, respectively. - - The compact form of the Contact header field is m (for "moved"). - - Examples: - - Contact: "Mr. Watson" - ;q=0.7; expires=3600, - "Mr. Watson" ;q=0.1 - m: ;expires=60 - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 167] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -20.11 Content-Disposition - - The Content-Disposition header field describes how the message body - or, for multipart messages, a message body part is to be interpreted - by the UAC or UAS. This SIP header field extends the MIME Content- - Type (RFC 2183 [18]). - - Several new "disposition-types" of the Content-Disposition header are - defined by SIP. The value "session" indicates that the body part - describes a session, for either calls or early (pre-call) media. The - value "render" indicates that the body part should be displayed or - otherwise rendered to the user. Note that the value "render" is used - rather than "inline" to avoid the connotation that the MIME body is - displayed as a part of the rendering of the entire message (since the - MIME bodies of SIP messages oftentimes are not displayed to users). - For backward-compatibility, if the Content-Disposition header field - is missing, the server SHOULD assume bodies of Content-Type - application/sdp are the disposition "session", while other content - types are "render". - - The disposition type "icon" indicates that the body part contains an - image suitable as an iconic representation of the caller or callee - that could be rendered informationally by a user agent when a message - has been received, or persistently while a dialog takes place. The - value "alert" indicates that the body part contains information, such - as an audio clip, that should be rendered by the user agent in an - attempt to alert the user to the receipt of a request, generally a - request that initiates a dialog; this alerting body could for example - be rendered as a ring tone for a phone call after a 180 Ringing - provisional response has been sent. - - Any MIME body with a "disposition-type" that renders content to the - user should only be processed when a message has been properly - authenticated. - - The handling parameter, handling-param, describes how the UAS should - react if it receives a message body whose content type or disposition - type it does not understand. The parameter has defined values of - "optional" and "required". If the handling parameter is missing, the - value "required" SHOULD be assumed. The handling parameter is - described in RFC 3204 [19]. - - If this header field is missing, the MIME type determines the default - content disposition. If there is none, "render" is assumed. - - Example: - - Content-Disposition: session - - - -Rosenberg, et. al. Standards Track [Page 168] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -20.12 Content-Encoding - - The Content-Encoding header field is used as a modifier to the - "media-type". When present, its value indicates what additional - content codings have been applied to the entity-body, and thus what - decoding mechanisms MUST be applied in order to obtain the media-type - referenced by the Content-Type header field. Content-Encoding is - primarily used to allow a body to be compressed without losing the - identity of its underlying media type. - - If multiple encodings have been applied to an entity-body, the - content codings MUST be listed in the order in which they were - applied. - - All content-coding values are case-insensitive. IANA acts as a - registry for content-coding value tokens. See [H3.5] for a - definition of the syntax for content-coding. - - Clients MAY apply content encodings to the body in requests. A - server MAY apply content encodings to the bodies in responses. The - server MUST only use encodings listed in the Accept-Encoding header - field in the request. - - The compact form of the Content-Encoding header field is e. - Examples: - - Content-Encoding: gzip - e: tar - -20.13 Content-Language - - See [H14.12]. Example: - - Content-Language: fr - -20.14 Content-Length - - The Content-Length header field indicates the size of the message- - body, in decimal number of octets, sent to the recipient. - Applications SHOULD use this field to indicate the size of the - message-body to be transferred, regardless of the media type of the - entity. If a stream-based protocol (such as TCP) is used as - transport, the header field MUST be used. - - The size of the message-body does not include the CRLF separating - header fields and body. Any Content-Length greater than or equal to - zero is a valid value. If no body is present in a message, then the - Content-Length header field value MUST be set to zero. - - - -Rosenberg, et. al. Standards Track [Page 169] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The ability to omit Content-Length simplifies the creation of - cgi-like scripts that dynamically generate responses. - - The compact form of the header field is l. - - Examples: - - Content-Length: 349 - l: 173 - -20.15 Content-Type - - The Content-Type header field indicates the media type of the - message-body sent to the recipient. The "media-type" element is - defined in [H3.7]. The Content-Type header field MUST be present if - the body is not empty. If the body is empty, and a Content-Type - header field is present, it indicates that the body of the specific - type has zero length (for example, an empty audio file). - - The compact form of the header field is c. - - Examples: - - Content-Type: application/sdp - c: text/html; charset=ISO-8859-4 - -20.16 CSeq - - A CSeq header field in a request contains a single decimal sequence - number and the request method. The sequence number MUST be - expressible as a 32-bit unsigned integer. The method part of CSeq is - case-sensitive. The CSeq header field serves to order transactions - within a dialog, to provide a means to uniquely identify - transactions, and to differentiate between new requests and request - retransmissions. Two CSeq header fields are considered equal if the - sequence number and the request method are identical. Example: - - CSeq: 4711 INVITE - -20.17 Date - - The Date header field contains the date and time. Unlike HTTP/1.1, - SIP only supports the most recent RFC 1123 [20] format for dates. As - in [H3.3], SIP restricts the time zone in SIP-date to "GMT", while - RFC 1123 allows any time zone. An RFC 1123 date is case-sensitive. - - The Date header field reflects the time when the request or response - is first sent. - - - -Rosenberg, et. al. Standards Track [Page 170] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The Date header field can be used by simple end systems without a - battery-backed clock to acquire a notion of current time. - However, in its GMT form, it requires clients to know their offset - from GMT. - - Example: - - Date: Sat, 13 Nov 2010 23:29:00 GMT - -20.18 Error-Info - - The Error-Info header field provides a pointer to additional - information about the error status response. - - SIP UACs have user interface capabilities ranging from pop-up - windows and audio on PC softclients to audio-only on "black" - phones or endpoints connected via gateways. Rather than forcing a - server generating an error to choose between sending an error - status code with a detailed reason phrase and playing an audio - recording, the Error-Info header field allows both to be sent. - The UAC then has the choice of which error indicator to render to - the caller. - - A UAC MAY treat a SIP or SIPS URI in an Error-Info header field as if - it were a Contact in a redirect and generate a new INVITE, resulting - in a recorded announcement session being established. A non-SIP URI - MAY be rendered to the user. - - Examples: - - SIP/2.0 404 The number you have dialed is not in service - Error-Info: - -20.19 Expires - - The Expires header field gives the relative time after which the - message (or content) expires. - - The precise meaning of this is method dependent. - - The expiration time in an INVITE does not affect the duration of the - actual session that may result from the invitation. Session - description protocols may offer the ability to express time limits on - the session duration, however. - - The value of this field is an integral number of seconds (in decimal) - between 0 and (2**32)-1, measured from the receipt of the request. - - - - -Rosenberg, et. al. Standards Track [Page 171] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example: - - Expires: 5 - -20.20 From - - The From header field indicates the initiator of the request. This - may be different from the initiator of the dialog. Requests sent by - the callee to the caller use the callee's address in the From header - field. - - The optional "display-name" is meant to be rendered by a human user - interface. A system SHOULD use the display name "Anonymous" if the - identity of the client is to remain hidden. Even if the "display- - name" is empty, the "name-addr" form MUST be used if the "addr-spec" - contains a comma, question mark, or semicolon. Syntax issues are - discussed in Section 7.3.1. - - Two From header fields are equivalent if their URIs match, and their - parameters match. Extension parameters in one header field, not - present in the other are ignored for the purposes of comparison. This - means that the display name and presence or absence of angle brackets - do not affect matching. - - See Section 20.10 for the rules for parsing a display name, URI and - URI parameters, and header field parameters. - - The compact form of the From header field is f. - - Examples: - - From: "A. G. Bell" ;tag=a48s - From: sip:+12125551212@server.phone2net.com;tag=887s - f: Anonymous ;tag=hyh8 - -20.21 In-Reply-To - - The In-Reply-To header field enumerates the Call-IDs that this call - references or returns. These Call-IDs may have been cached by the - client then included in this header field in a return call. - - This allows automatic call distribution systems to route return - calls to the originator of the first call. This also allows - callees to filter calls, so that only return calls for calls they - originated will be accepted. This field is not a substitute for - request authentication. - - - - - -Rosenberg, et. al. Standards Track [Page 172] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example: - - In-Reply-To: 70710@saturn.bell-tel.com, 17320@saturn.bell-tel.com - -20.22 Max-Forwards - - The Max-Forwards header field must be used with any SIP method to - limit the number of proxies or gateways that can forward the request - to the next downstream server. This can also be useful when the - client is attempting to trace a request chain that appears to be - failing or looping in mid-chain. - - The Max-Forwards value is an integer in the range 0-255 indicating - the remaining number of times this request message is allowed to be - forwarded. This count is decremented by each server that forwards - the request. The recommended initial value is 70. - - This header field should be inserted by elements that can not - otherwise guarantee loop detection. For example, a B2BUA should - insert a Max-Forwards header field. - - Example: - - Max-Forwards: 6 - -20.23 Min-Expires - - The Min-Expires header field conveys the minimum refresh interval - supported for soft-state elements managed by that server. This - includes Contact header fields that are stored by a registrar. The - header field contains a decimal integer number of seconds from 0 to - (2**32)-1. The use of the header field in a 423 (Interval Too Brief) - response is described in Sections 10.2.8, 10.3, and 21.4.17. - - Example: - - Min-Expires: 60 - -20.24 MIME-Version - - See [H19.4.1]. - - Example: - - MIME-Version: 1.0 - - - - - - -Rosenberg, et. al. Standards Track [Page 173] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -20.25 Organization - - The Organization header field conveys the name of the organization to - which the SIP element issuing the request or response belongs. - - The field MAY be used by client software to filter calls. - - Example: - - Organization: Boxes by Bob - -20.26 Priority - - The Priority header field indicates the urgency of the request as - perceived by the client. The Priority header field describes the - priority that the SIP request should have to the receiving human or - its agent. For example, it may be factored into decisions about call - routing and acceptance. For these decisions, a message containing no - Priority header field SHOULD be treated as if it specified a Priority - of "normal". The Priority header field does not influence the use of - communications resources such as packet forwarding priority in - routers or access to circuits in PSTN gateways. The header field can - have the values "non-urgent", "normal", "urgent", and "emergency", - but additional values can be defined elsewhere. It is RECOMMENDED - that the value of "emergency" only be used when life, limb, or - property are in imminent danger. Otherwise, there are no semantics - defined for this header field. - - These are the values of RFC 2076 [38], with the addition of - "emergency". - - Examples: - - Subject: A tornado is heading our way! - Priority: emergency - - or - - Subject: Weekend plans - Priority: non-urgent - -20.27 Proxy-Authenticate - - A Proxy-Authenticate header field value contains an authentication - challenge. - - The use of this header field is defined in [H14.33]. See Section - 22.3 for further details on its usage. - - - -Rosenberg, et. al. Standards Track [Page 174] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example: - - Proxy-Authenticate: Digest realm="atlanta.com", - domain="sip:ss1.carrier.com", qop="auth", - nonce="f84f1cec41e6cbe5aea9c8e88d359", - opaque="", stale=FALSE, algorithm=MD5 - -20.28 Proxy-Authorization - - The Proxy-Authorization header field allows the client to identify - itself (or its user) to a proxy that requires authentication. A - Proxy-Authorization field value consists of credentials containing - the authentication information of the user agent for the proxy and/or - realm of the resource being requested. - - See Section 22.3 for a definition of the usage of this header field. - - This header field, along with Authorization, breaks the general rules - about multiple header field names. Although not a comma-separated - list, this header field name may be present multiple times, and MUST - NOT be combined into a single header line using the usual rules - described in Section 7.3.1. - - Example: - - Proxy-Authorization: Digest username="Alice", realm="atlanta.com", - nonce="c60f3082ee1212b402a21831ae", - response="245f23415f11432b3434341c022" - -20.29 Proxy-Require - - The Proxy-Require header field is used to indicate proxy-sensitive - features that must be supported by the proxy. See Section 20.32 for - more details on the mechanics of this message and a usage example. - - Example: - - Proxy-Require: foo - -20.30 Record-Route - - The Record-Route header field is inserted by proxies in a request to - force future requests in the dialog to be routed through the proxy. - - Examples of its use with the Route header field are described in - Sections 16.12.1. - - - - - -Rosenberg, et. al. Standards Track [Page 175] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example: - - Record-Route: , - - -20.31 Reply-To - - The Reply-To header field contains a logical return URI that may be - different from the From header field. For example, the URI MAY be - used to return missed calls or unestablished sessions. If the user - wished to remain anonymous, the header field SHOULD either be omitted - from the request or populated in such a way that does not reveal any - private information. - - Even if the "display-name" is empty, the "name-addr" form MUST be - used if the "addr-spec" contains a comma, question mark, or - semicolon. Syntax issues are discussed in Section 7.3.1. - - Example: - - Reply-To: Bob - -20.32 Require - - The Require header field is used by UACs to tell UASs about options - that the UAC expects the UAS to support in order to process the - request. Although an optional header field, the Require MUST NOT be - ignored if it is present. - - The Require header field contains a list of option tags, described in - Section 19.2. Each option tag defines a SIP extension that MUST be - understood to process the request. Frequently, this is used to - indicate that a specific set of extension header fields need to be - understood. A UAC compliant to this specification MUST only include - option tags corresponding to standards-track RFCs. - - Example: - - Require: 100rel - -20.33 Retry-After - - The Retry-After header field can be used with a 500 (Server Internal - Error) or 503 (Service Unavailable) response to indicate how long the - service is expected to be unavailable to the requesting client and - with a 404 (Not Found), 413 (Request Entity Too Large), 480 - (Temporarily Unavailable), 486 (Busy Here), 600 (Busy), or 603 - - - - -Rosenberg, et. al. Standards Track [Page 176] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - (Decline) response to indicate when the called party anticipates - being available again. The value of this field is a positive integer - number of seconds (in decimal) after the time of the response. - - An optional comment can be used to indicate additional information - about the time of callback. An optional "duration" parameter - indicates how long the called party will be reachable starting at the - initial time of availability. If no duration parameter is given, the - service is assumed to be available indefinitely. - - Examples: - - Retry-After: 18000;duration=3600 - Retry-After: 120 (I'm in a meeting) - -20.34 Route - - The Route header field is used to force routing for a request through - the listed set of proxies. Examples of the use of the Route header - field are in Section 16.12.1. - - Example: - - Route: , - - -20.35 Server - - The Server header field contains information about the software used - by the UAS to handle the request. - - Revealing the specific software version of the server might allow the - server to become more vulnerable to attacks against software that is - known to contain security holes. Implementers SHOULD make the Server - header field a configurable option. - - Example: - - Server: HomeServer v2 - -20.36 Subject - - The Subject header field provides a summary or indicates the nature - of the call, allowing call filtering without having to parse the - session description. The session description does not have to use - the same subject indication as the invitation. - - The compact form of the Subject header field is s. - - - -Rosenberg, et. al. Standards Track [Page 177] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Example: - - Subject: Need more boxes - s: Tech Support - -20.37 Supported - - The Supported header field enumerates all the extensions supported by - the UAC or UAS. - - The Supported header field contains a list of option tags, described - in Section 19.2, that are understood by the UAC or UAS. A UA - compliant to this specification MUST only include option tags - corresponding to standards-track RFCs. If empty, it means that no - extensions are supported. - - The compact form of the Supported header field is k. - - Example: - - Supported: 100rel - -20.38 Timestamp - - The Timestamp header field describes when the UAC sent the request to - the UAS. - - See Section 8.2.6 for details on how to generate a response to a - request that contains the header field. Although there is no - normative behavior defined here that makes use of the header, it - allows for extensions or SIP applications to obtain RTT estimates. - - Example: - - Timestamp: 54 - -20.39 To - - The To header field specifies the logical recipient of the request. - - The optional "display-name" is meant to be rendered by a human-user - interface. The "tag" parameter serves as a general mechanism for - dialog identification. - - See Section 19.3 for details of the "tag" parameter. - - - - - - -Rosenberg, et. al. Standards Track [Page 178] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Comparison of To header fields for equality is identical to - comparison of From header fields. See Section 20.10 for the rules - for parsing a display name, URI and URI parameters, and header field - parameters. - - The compact form of the To header field is t. - - The following are examples of valid To header fields: - - To: The Operator ;tag=287447 - t: sip:+12125551212@server.phone2net.com - -20.40 Unsupported - - The Unsupported header field lists the features not supported by the - UAS. See Section 20.32 for motivation. - - Example: - - Unsupported: foo - -20.41 User-Agent - - The User-Agent header field contains information about the UAC - originating the request. The semantics of this header field are - defined in [H14.43]. - - Revealing the specific software version of the user agent might allow - the user agent to become more vulnerable to attacks against software - that is known to contain security holes. Implementers SHOULD make - the User-Agent header field a configurable option. - - Example: - - User-Agent: Softphone Beta1.5 - -20.42 Via - - The Via header field indicates the path taken by the request so far - and indicates the path that should be followed in routing responses. - The branch ID parameter in the Via header field values serves as a - transaction identifier, and is used by proxies to detect loops. - - A Via header field value contains the transport protocol used to send - the message, the client's host name or network address, and possibly - the port number at which it wishes to receive responses. A Via - header field value can also contain parameters such as "maddr", - "ttl", "received", and "branch", whose meaning and use are described - - - -Rosenberg, et. al. Standards Track [Page 179] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - in other sections. For implementations compliant to this - specification, the value of the branch parameter MUST start with the - magic cookie "z9hG4bK", as discussed in Section 8.1.1.7. - - Transport protocols defined here are "UDP", "TCP", "TLS", and "SCTP". - "TLS" means TLS over TCP. When a request is sent to a SIPS URI, the - protocol still indicates "SIP", and the transport protocol is TLS. - -Via: SIP/2.0/UDP erlang.bell-telephone.com:5060;branch=z9hG4bK87asdks7 -Via: SIP/2.0/UDP 192.0.2.1:5060 ;received=192.0.2.207 - ;branch=z9hG4bK77asjd - - The compact form of the Via header field is v. - - In this example, the message originated from a multi-homed host with - two addresses, 192.0.2.1 and 192.0.2.207. The sender guessed wrong - as to which network interface would be used. Erlang.bell- - telephone.com noticed the mismatch and added a parameter to the - previous hop's Via header field value, containing the address that - the packet actually came from. - - The host or network address and port number are not required to - follow the SIP URI syntax. Specifically, LWS on either side of the - ":" or "/" is allowed, as shown here: - - Via: SIP / 2.0 / UDP first.example.com: 4000;ttl=16 - ;maddr=224.2.0.1 ;branch=z9hG4bKa7c6a8dlze.1 - - Even though this specification mandates that the branch parameter be - present in all requests, the BNF for the header field indicates that - it is optional. This allows interoperation with RFC 2543 elements, - which did not have to insert the branch parameter. - - Two Via header fields are equal if their sent-protocol and sent-by - fields are equal, both have the same set of parameters, and the - values of all parameters are equal. - -20.43 Warning - - The Warning header field is used to carry additional information - about the status of a response. Warning header field values are sent - with responses and contain a three-digit warning code, host name, and - warning text. - - The "warn-text" should be in a natural language that is most likely - to be intelligible to the human user receiving the response. This - decision can be based on any available knowledge, such as the - location of the user, the Accept-Language field in a request, or the - - - -Rosenberg, et. al. Standards Track [Page 180] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Content-Language field in a response. The default language is i- - default [21]. - - The currently-defined "warn-code"s are listed below, with a - recommended warn-text in English and a description of their meaning. - These warnings describe failures induced by the session description. - The first digit of warning codes beginning with "3" indicates - warnings specific to SIP. Warnings 300 through 329 are reserved for - indicating problems with keywords in the session description, 330 - through 339 are warnings related to basic network services requested - in the session description, 370 through 379 are warnings related to - quantitative QoS parameters requested in the session description, and - 390 through 399 are miscellaneous warnings that do not fall into one - of the above categories. - - 300 Incompatible network protocol: One or more network protocols - contained in the session description are not available. - - 301 Incompatible network address formats: One or more network - address formats contained in the session description are not - available. - - 302 Incompatible transport protocol: One or more transport - protocols described in the session description are not - available. - - 303 Incompatible bandwidth units: One or more bandwidth - measurement units contained in the session description were - not understood. - - 304 Media type not available: One or more media types contained in - the session description are not available. - - 305 Incompatible media format: One or more media formats contained - in the session description are not available. - - 306 Attribute not understood: One or more of the media attributes - in the session description are not supported. - - 307 Session description parameter not understood: A parameter - other than those listed above was not understood. - - 330 Multicast not available: The site where the user is located - does not support multicast. - - 331 Unicast not available: The site where the user is located does - not support unicast communication (usually due to the presence - of a firewall). - - - -Rosenberg, et. al. Standards Track [Page 181] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - 370 Insufficient bandwidth: The bandwidth specified in the session - description or defined by the media exceeds that known to be - available. - - 399 Miscellaneous warning: The warning text can include arbitrary - information to be presented to a human user or logged. A - system receiving this warning MUST NOT take any automated - action. - - 1xx and 2xx have been taken by HTTP/1.1. - - Additional "warn-code"s can be defined through IANA, as defined in - Section 27.2. - - Examples: - - Warning: 307 isi.edu "Session parameter 'foo' not understood" - Warning: 301 isi.edu "Incompatible network address type 'E.164'" - -20.44 WWW-Authenticate - - A WWW-Authenticate header field value contains an authentication - challenge. See Section 22.2 for further details on its usage. - - Example: - - WWW-Authenticate: Digest realm="atlanta.com", - domain="sip:boxesbybob.com", qop="auth", - nonce="f84f1cec41e6cbe5aea9c8e88d359", - opaque="", stale=FALSE, algorithm=MD5 - -21 Response Codes - - The response codes are consistent with, and extend, HTTP/1.1 response - codes. Not all HTTP/1.1 response codes are appropriate, and only - those that are appropriate are given here. Other HTTP/1.1 response - codes SHOULD NOT be used. Also, SIP defines a new class, 6xx. - -21.1 Provisional 1xx - - Provisional responses, also known as informational responses, - indicate that the server contacted is performing some further action - and does not yet have a definitive response. A server sends a 1xx - response if it expects to take more than 200 ms to obtain a final - response. Note that 1xx responses are not transmitted reliably. - They never cause the client to send an ACK. Provisional (1xx) - responses MAY contain message bodies, including session descriptions. - - - - -Rosenberg, et. al. Standards Track [Page 182] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.1.1 100 Trying - - This response indicates that the request has been received by the - next-hop server and that some unspecified action is being taken on - behalf of this call (for example, a database is being consulted). - This response, like all other provisional responses, stops - retransmissions of an INVITE by a UAC. The 100 (Trying) response is - different from other provisional responses, in that it is never - forwarded upstream by a stateful proxy. - -21.1.2 180 Ringing - - The UA receiving the INVITE is trying to alert the user. This - response MAY be used to initiate local ringback. - -21.1.3 181 Call Is Being Forwarded - - A server MAY use this status code to indicate that the call is being - forwarded to a different set of destinations. - -21.1.4 182 Queued - - The called party is temporarily unavailable, but the server has - decided to queue the call rather than reject it. When the callee - becomes available, it will return the appropriate final status - response. The reason phrase MAY give further details about the - status of the call, for example, "5 calls queued; expected waiting - time is 15 minutes". The server MAY issue several 182 (Queued) - responses to update the caller about the status of the queued call. - -21.1.5 183 Session Progress - - The 183 (Session Progress) response is used to convey information - about the progress of the call that is not otherwise classified. The - Reason-Phrase, header fields, or message body MAY be used to convey - more details about the call progress. - -21.2 Successful 2xx - - The request was successful. - -21.2.1 200 OK - - The request has succeeded. The information returned with the - response depends on the method used in the request. - - - - - - -Rosenberg, et. al. Standards Track [Page 183] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.3 Redirection 3xx - - 3xx responses give information about the user's new location, or - about alternative services that might be able to satisfy the call. - -21.3.1 300 Multiple Choices - - The address in the request resolved to several choices, each with its - own specific location, and the user (or UA) can select a preferred - communication end point and redirect its request to that location. - - The response MAY include a message body containing a list of resource - characteristics and location(s) from which the user or UA can choose - the one most appropriate, if allowed by the Accept request header - field. However, no MIME types have been defined for this message - body. - - The choices SHOULD also be listed as Contact fields (Section 20.10). - Unlike HTTP, the SIP response MAY contain several Contact fields or a - list of addresses in a Contact field. UAs MAY use the Contact header - field value for automatic redirection or MAY ask the user to confirm - a choice. However, this specification does not define any standard - for such automatic selection. - - This status response is appropriate if the callee can be reached - at several different locations and the server cannot or prefers - not to proxy the request. - -21.3.2 301 Moved Permanently - - The user can no longer be found at the address in the Request-URI, - and the requesting client SHOULD retry at the new address given by - the Contact header field (Section 20.10). The requestor SHOULD - update any local directories, address books, and user location caches - with this new value and redirect future requests to the address(es) - listed. - -21.3.3 302 Moved Temporarily - - The requesting client SHOULD retry the request at the new address(es) - given by the Contact header field (Section 20.10). The Request-URI - of the new request uses the value of the Contact header field in the - response. - - - - - - - - -Rosenberg, et. al. Standards Track [Page 184] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The duration of the validity of the Contact URI can be indicated - through an Expires (Section 20.19) header field or an expires - parameter in the Contact header field. Both proxies and UAs MAY - cache this URI for the duration of the expiration time. If there is - no explicit expiration time, the address is only valid once for - recursing, and MUST NOT be cached for future transactions. - - If the URI cached from the Contact header field fails, the Request- - URI from the redirected request MAY be tried again a single time. - - The temporary URI may have become out-of-date sooner than the - expiration time, and a new temporary URI may be available. - -21.3.4 305 Use Proxy - - The requested resource MUST be accessed through the proxy given by - the Contact field. The Contact field gives the URI of the proxy. - The recipient is expected to repeat this single request via the - proxy. 305 (Use Proxy) responses MUST only be generated by UASs. - -21.3.5 380 Alternative Service - - The call was not successful, but alternative services are possible. - - The alternative services are described in the message body of the - response. Formats for such bodies are not defined here, and may be - the subject of future standardization. - -21.4 Request Failure 4xx - - 4xx responses are definite failure responses from a particular - server. The client SHOULD NOT retry the same request without - modification (for example, adding appropriate authorization). - However, the same request to a different server might be successful. - -21.4.1 400 Bad Request - - The request could not be understood due to malformed syntax. The - Reason-Phrase SHOULD identify the syntax problem in more detail, for - example, "Missing Call-ID header field". - -21.4.2 401 Unauthorized - - The request requires user authentication. This response is issued by - UASs and registrars, while 407 (Proxy Authentication Required) is - used by proxy servers. - - - - - -Rosenberg, et. al. Standards Track [Page 185] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.4.3 402 Payment Required - - Reserved for future use. - -21.4.4 403 Forbidden - - The server understood the request, but is refusing to fulfill it. - Authorization will not help, and the request SHOULD NOT be repeated. - -21.4.5 404 Not Found - - The server has definitive information that the user does not exist at - the domain specified in the Request-URI. This status is also - returned if the domain in the Request-URI does not match any of the - domains handled by the recipient of the request. - -21.4.6 405 Method Not Allowed - - The method specified in the Request-Line is understood, but not - allowed for the address identified by the Request-URI. - - The response MUST include an Allow header field containing a list of - valid methods for the indicated address. - -21.4.7 406 Not Acceptable - - The resource identified by the request is only capable of generating - response entities that have content characteristics not acceptable - according to the Accept header field sent in the request. - -21.4.8 407 Proxy Authentication Required - - This code is similar to 401 (Unauthorized), but indicates that the - client MUST first authenticate itself with the proxy. SIP access - authentication is explained in Sections 26 and 22.3. - - This status code can be used for applications where access to the - communication channel (for example, a telephony gateway) rather than - the callee requires authentication. - -21.4.9 408 Request Timeout - - The server could not produce a response within a suitable amount of - time, for example, if it could not determine the location of the user - in time. The client MAY repeat the request without modifications at - any later time. - - - - - -Rosenberg, et. al. Standards Track [Page 186] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.4.10 410 Gone - - The requested resource is no longer available at the server and no - forwarding address is known. This condition is expected to be - considered permanent. If the server does not know, or has no - facility to determine, whether or not the condition is permanent, the - status code 404 (Not Found) SHOULD be used instead. - -21.4.11 413 Request Entity Too Large - - The server is refusing to process a request because the request - entity-body is larger than the server is willing or able to process. - The server MAY close the connection to prevent the client from - continuing the request. - - If the condition is temporary, the server SHOULD include a Retry- - After header field to indicate that it is temporary and after what - time the client MAY try again. - -21.4.12 414 Request-URI Too Long - - The server is refusing to service the request because the Request-URI - is longer than the server is willing to interpret. - -21.4.13 415 Unsupported Media Type - - The server is refusing to service the request because the message - body of the request is in a format not supported by the server for - the requested method. The server MUST return a list of acceptable - formats using the Accept, Accept-Encoding, or Accept-Language header - field, depending on the specific problem with the content. UAC - processing of this response is described in Section 8.1.3.5. - -21.4.14 416 Unsupported URI Scheme - - The server cannot process the request because the scheme of the URI - in the Request-URI is unknown to the server. Client processing of - this response is described in Section 8.1.3.5. - -21.4.15 420 Bad Extension - - The server did not understand the protocol extension specified in a - Proxy-Require (Section 20.29) or Require (Section 20.32) header - field. The server MUST include a list of the unsupported extensions - in an Unsupported header field in the response. UAC processing of - this response is described in Section 8.1.3.5. - - - - - -Rosenberg, et. al. Standards Track [Page 187] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.4.16 421 Extension Required - - The UAS needs a particular extension to process the request, but this - extension is not listed in a Supported header field in the request. - Responses with this status code MUST contain a Require header field - listing the required extensions. - - A UAS SHOULD NOT use this response unless it truly cannot provide any - useful service to the client. Instead, if a desirable extension is - not listed in the Supported header field, servers SHOULD process the - request using baseline SIP capabilities and any extensions supported - by the client. - -21.4.17 423 Interval Too Brief - - The server is rejecting the request because the expiration time of - the resource refreshed by the request is too short. This response - can be used by a registrar to reject a registration whose Contact - header field expiration time was too small. The use of this response - and the related Min-Expires header field are described in Sections - 10.2.8, 10.3, and 20.23. - -21.4.18 480 Temporarily Unavailable - - The callee's end system was contacted successfully but the callee is - currently unavailable (for example, is not logged in, logged in but - in a state that precludes communication with the callee, or has - activated the "do not disturb" feature). The response MAY indicate a - better time to call in the Retry-After header field. The user could - also be available elsewhere (unbeknownst to this server). The reason - phrase SHOULD indicate a more precise cause as to why the callee is - unavailable. This value SHOULD be settable by the UA. Status 486 - (Busy Here) MAY be used to more precisely indicate a particular - reason for the call failure. - - This status is also returned by a redirect or proxy server that - recognizes the user identified by the Request-URI, but does not - currently have a valid forwarding location for that user. - -21.4.19 481 Call/Transaction Does Not Exist - - This status indicates that the UAS received a request that does not - match any existing dialog or transaction. - -21.4.20 482 Loop Detected - - The server has detected a loop (Section 16.3 Item 4). - - - - -Rosenberg, et. al. Standards Track [Page 188] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.4.21 483 Too Many Hops - - The server received a request that contains a Max-Forwards (Section - 20.22) header field with the value zero. - -21.4.22 484 Address Incomplete - - The server received a request with a Request-URI that was incomplete. - Additional information SHOULD be provided in the reason phrase. - - This status code allows overlapped dialing. With overlapped - dialing, the client does not know the length of the dialing - string. It sends strings of increasing lengths, prompting the - user for more input, until it no longer receives a 484 (Address - Incomplete) status response. - -21.4.23 485 Ambiguous - - The Request-URI was ambiguous. The response MAY contain a listing of - possible unambiguous addresses in Contact header fields. Revealing - alternatives can infringe on privacy of the user or the organization. - It MUST be possible to configure a server to respond with status 404 - (Not Found) or to suppress the listing of possible choices for - ambiguous Request-URIs. - - Example response to a request with the Request-URI - sip:lee@example.com: - - SIP/2.0 485 Ambiguous - Contact: Carol Lee - Contact: Ping Lee - Contact: Lee M. Foote - - Some email and voice mail systems provide this functionality. A - status code separate from 3xx is used since the semantics are - different: for 300, it is assumed that the same person or service - will be reached by the choices provided. While an automated - choice or sequential search makes sense for a 3xx response, user - intervention is required for a 485 (Ambiguous) response. - -21.4.24 486 Busy Here - - The callee's end system was contacted successfully, but the callee is - currently not willing or able to take additional calls at this end - system. The response MAY indicate a better time to call in the - Retry-After header field. The user could also be available - - - - - -Rosenberg, et. al. Standards Track [Page 189] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - elsewhere, such as through a voice mail service. Status 600 (Busy - Everywhere) SHOULD be used if the client knows that no other end - system will be able to accept this call. - -21.4.25 487 Request Terminated - - The request was terminated by a BYE or CANCEL request. This response - is never returned for a CANCEL request itself. - -21.4.26 488 Not Acceptable Here - - The response has the same meaning as 606 (Not Acceptable), but only - applies to the specific resource addressed by the Request-URI and the - request may succeed elsewhere. - - A message body containing a description of media capabilities MAY be - present in the response, which is formatted according to the Accept - header field in the INVITE (or application/sdp if not present), the - same as a message body in a 200 (OK) response to an OPTIONS request. - -21.4.27 491 Request Pending - - The request was received by a UAS that had a pending request within - the same dialog. Section 14.2 describes how such "glare" situations - are resolved. - -21.4.28 493 Undecipherable - - The request was received by a UAS that contained an encrypted MIME - body for which the recipient does not possess or will not provide an - appropriate decryption key. This response MAY have a single body - containing an appropriate public key that should be used to encrypt - MIME bodies sent to this UA. Details of the usage of this response - code can be found in Section 23.2. - -21.5 Server Failure 5xx - - 5xx responses are failure responses given when a server itself has - erred. - -21.5.1 500 Server Internal Error - - The server encountered an unexpected condition that prevented it from - fulfilling the request. The client MAY display the specific error - condition and MAY retry the request after several seconds. - - If the condition is temporary, the server MAY indicate when the - client may retry the request using the Retry-After header field. - - - -Rosenberg, et. al. Standards Track [Page 190] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.5.2 501 Not Implemented - - The server does not support the functionality required to fulfill the - request. This is the appropriate response when a UAS does not - recognize the request method and is not capable of supporting it for - any user. (Proxies forward all requests regardless of method.) - - Note that a 405 (Method Not Allowed) is sent when the server - recognizes the request method, but that method is not allowed or - supported. - -21.5.3 502 Bad Gateway - - The server, while acting as a gateway or proxy, received an invalid - response from the downstream server it accessed in attempting to - fulfill the request. - -21.5.4 503 Service Unavailable - - The server is temporarily unable to process the request due to a - temporary overloading or maintenance of the server. The server MAY - indicate when the client should retry the request in a Retry-After - header field. If no Retry-After is given, the client MUST act as if - it had received a 500 (Server Internal Error) response. - - A client (proxy or UAC) receiving a 503 (Service Unavailable) SHOULD - attempt to forward the request to an alternate server. It SHOULD NOT - forward any other requests to that server for the duration specified - in the Retry-After header field, if present. - - Servers MAY refuse the connection or drop the request instead of - responding with 503 (Service Unavailable). - -21.5.5 504 Server Time-out - - The server did not receive a timely response from an external server - it accessed in attempting to process the request. 408 (Request - Timeout) should be used instead if there was no response within the - period specified in the Expires header field from the upstream - server. - -21.5.6 505 Version Not Supported - - The server does not support, or refuses to support, the SIP protocol - version that was used in the request. The server is indicating that - it is unable or unwilling to complete the request using the same - major version as the client, other than with this error message. - - - - -Rosenberg, et. al. Standards Track [Page 191] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -21.5.7 513 Message Too Large - - The server was unable to process the request since the message length - exceeded its capabilities. - -21.6 Global Failures 6xx - - 6xx responses indicate that a server has definitive information about - a particular user, not just the particular instance indicated in the - Request-URI. - -21.6.1 600 Busy Everywhere - - The callee's end system was contacted successfully but the callee is - busy and does not wish to take the call at this time. The response - MAY indicate a better time to call in the Retry-After header field. - If the callee does not wish to reveal the reason for declining the - call, the callee uses status code 603 (Decline) instead. This status - response is returned only if the client knows that no other end point - (such as a voice mail system) will answer the request. Otherwise, - 486 (Busy Here) should be returned. - -21.6.2 603 Decline - - The callee's machine was successfully contacted but the user - explicitly does not wish to or cannot participate. The response MAY - indicate a better time to call in the Retry-After header field. This - status response is returned only if the client knows that no other - end point will answer the request. - -21.6.3 604 Does Not Exist Anywhere - - The server has authoritative information that the user indicated in - the Request-URI does not exist anywhere. - -21.6.4 606 Not Acceptable - - The user's agent was contacted successfully but some aspects of the - session description such as the requested media, bandwidth, or - addressing style were not acceptable. - - A 606 (Not Acceptable) response means that the user wishes to - communicate, but cannot adequately support the session described. - The 606 (Not Acceptable) response MAY contain a list of reasons in a - Warning header field describing why the session described cannot be - supported. Warning reason codes are listed in Section 20.43. - - - - - -Rosenberg, et. al. Standards Track [Page 192] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - A message body containing a description of media capabilities MAY be - present in the response, which is formatted according to the Accept - header field in the INVITE (or application/sdp if not present), the - same as a message body in a 200 (OK) response to an OPTIONS request. - - It is hoped that negotiation will not frequently be needed, and when - a new user is being invited to join an already existing conference, - negotiation may not be possible. It is up to the invitation - initiator to decide whether or not to act on a 606 (Not Acceptable) - response. - - This status response is returned only if the client knows that no - other end point will answer the request. - -22 Usage of HTTP Authentication - - SIP provides a stateless, challenge-based mechanism for - authentication that is based on authentication in HTTP. Any time - that a proxy server or UA receives a request (with the exceptions - given in Section 22.1), it MAY challenge the initiator of the request - to provide assurance of its identity. Once the originator has been - identified, the recipient of the request SHOULD ascertain whether or - not this user is authorized to make the request in question. No - authorization systems are recommended or discussed in this document. - - The "Digest" authentication mechanism described in this section - provides message authentication and replay protection only, without - message integrity or confidentiality. Protective measures above and - beyond those provided by Digest need to be taken to prevent active - attackers from modifying SIP requests and responses. - - Note that due to its weak security, the usage of "Basic" - authentication has been deprecated. Servers MUST NOT accept - credentials using the "Basic" authorization scheme, and servers also - MUST NOT challenge with "Basic". This is a change from RFC 2543. - -22.1 Framework - - The framework for SIP authentication closely parallels that of HTTP - (RFC 2617 [17]). In particular, the BNF for auth-scheme, auth-param, - challenge, realm, realm-value, and credentials is identical (although - the usage of "Basic" as a scheme is not permitted). In SIP, a UAS - uses the 401 (Unauthorized) response to challenge the identity of a - UAC. Additionally, registrars and redirect servers MAY make use of - 401 (Unauthorized) responses for authentication, but proxies MUST - NOT, and instead MAY use the 407 (Proxy Authentication Required) - - - - - -Rosenberg, et. al. Standards Track [Page 193] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - response. The requirements for inclusion of the Proxy-Authenticate, - Proxy-Authorization, WWW-Authenticate, and Authorization in the - various messages are identical to those described in RFC 2617 [17]. - - Since SIP does not have the concept of a canonical root URL, the - notion of protection spaces is interpreted differently in SIP. The - realm string alone defines the protection domain. This is a change - from RFC 2543, in which the Request-URI and the realm together - defined the protection domain. - - This previous definition of protection domain caused some amount - of confusion since the Request-URI sent by the UAC and the - Request-URI received by the challenging server might be different, - and indeed the final form of the Request-URI might not be known to - the UAC. Also, the previous definition depended on the presence - of a SIP URI in the Request-URI and seemed to rule out alternative - URI schemes (for example, the tel URL). - - Operators of user agents or proxy servers that will authenticate - received requests MUST adhere to the following guidelines for - creation of a realm string for their server: - - o Realm strings MUST be globally unique. It is RECOMMENDED that - a realm string contain a hostname or domain name, following the - recommendation in Section 3.2.1 of RFC 2617 [17]. - - o Realm strings SHOULD present a human-readable identifier that - can be rendered to a user. - - For example: - - INVITE sip:bob@biloxi.com SIP/2.0 - Authorization: Digest realm="biloxi.com", <...> - - Generally, SIP authentication is meaningful for a specific realm, a - protection domain. Thus, for Digest authentication, each such - protection domain has its own set of usernames and passwords. If a - server does not require authentication for a particular request, it - MAY accept a default username, "anonymous", which has no password - (password of ""). Similarly, UACs representing many users, such as - PSTN gateways, MAY have their own device-specific username and - password, rather than accounts for particular users, for their realm. - - While a server can legitimately challenge most SIP requests, there - are two requests defined by this document that require special - handling for authentication: ACK and CANCEL. - - - - - -Rosenberg, et. al. Standards Track [Page 194] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Under an authentication scheme that uses responses to carry values - used to compute nonces (such as Digest), some problems come up for - any requests that take no response, including ACK. For this reason, - any credentials in the INVITE that were accepted by a server MUST be - accepted by that server for the ACK. UACs creating an ACK message - will duplicate all of the Authorization and Proxy-Authorization - header field values that appeared in the INVITE to which the ACK - corresponds. Servers MUST NOT attempt to challenge an ACK. - - Although the CANCEL method does take a response (a 2xx), servers MUST - NOT attempt to challenge CANCEL requests since these requests cannot - be resubmitted. Generally, a CANCEL request SHOULD be accepted by a - server if it comes from the same hop that sent the request being - canceled (provided that some sort of transport or network layer - security association, as described in Section 26.2.1, is in place). - - When a UAC receives a challenge, it SHOULD render to the user the - contents of the "realm" parameter in the challenge (which appears in - either a WWW-Authenticate header field or Proxy-Authenticate header - field) if the UAC device does not already know of a credential for - the realm in question. A service provider that pre-configures UAs - with credentials for its realm should be aware that users will not - have the opportunity to present their own credentials for this realm - when challenged at a pre-configured device. - - Finally, note that even if a UAC can locate credentials that are - associated with the proper realm, the potential exists that these - credentials may no longer be valid or that the challenging server - will not accept these credentials for whatever reason (especially - when "anonymous" with no password is submitted). In this instance a - server may repeat its challenge, or it may respond with a 403 - Forbidden. A UAC MUST NOT re-attempt requests with the credentials - that have just been rejected (though the request may be retried if - the nonce was stale). - -22.2 User-to-User Authentication - - When a UAS receives a request from a UAC, the UAS MAY authenticate - the originator before the request is processed. If no credentials - (in the Authorization header field) are provided in the request, the - UAS can challenge the originator to provide credentials by rejecting - the request with a 401 (Unauthorized) status code. - - The WWW-Authenticate response-header field MUST be included in 401 - (Unauthorized) response messages. The field value consists of at - least one challenge that indicates the authentication scheme(s) and - parameters applicable to the realm. - - - - -Rosenberg, et. al. Standards Track [Page 195] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - An example of the WWW-Authenticate header field in a 401 challenge - is: - - WWW-Authenticate: Digest - realm="biloxi.com", - qop="auth,auth-int", - nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", - opaque="5ccc069c403ebaf9f0171e9517f40e41" - - When the originating UAC receives the 401 (Unauthorized), it SHOULD, - if it is able, re-originate the request with the proper credentials. - The UAC may require input from the originating user before - proceeding. Once authentication credentials have been supplied - (either directly by the user, or discovered in an internal keyring), - UAs SHOULD cache the credentials for a given value of the To header - field and "realm" and attempt to re-use these values on the next - request for that destination. UAs MAY cache credentials in any way - they would like. - - If no credentials for a realm can be located, UACs MAY attempt to - retry the request with a username of "anonymous" and no password (a - password of ""). - - Once credentials have been located, any UA that wishes to - authenticate itself with a UAS or registrar -- usually, but not - necessarily, after receiving a 401 (Unauthorized) response -- MAY do - so by including an Authorization header field with the request. The - Authorization field value consists of credentials containing the - authentication information of the UA for the realm of the resource - being requested as well as parameters required in support of - authentication and replay protection. - - An example of the Authorization header field is: - - Authorization: Digest username="bob", - realm="biloxi.com", - nonce="dcd98b7102dd2f0e8b11d0f600bfb0c093", - uri="sip:bob@biloxi.com", - qop=auth, - nc=00000001, - cnonce="0a4f113b", - response="6629fae49393a05397450978507c4ef1", - opaque="5ccc069c403ebaf9f0171e9517f40e41" - - When a UAC resubmits a request with its credentials after receiving a - 401 (Unauthorized) or 407 (Proxy Authentication Required) response, - it MUST increment the CSeq header field value as it would normally - when sending an updated request. - - - -Rosenberg, et. al. Standards Track [Page 196] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -22.3 Proxy-to-User Authentication - - Similarly, when a UAC sends a request to a proxy server, the proxy - server MAY authenticate the originator before the request is - processed. If no credentials (in the Proxy-Authorization header - field) are provided in the request, the proxy can challenge the - originator to provide credentials by rejecting the request with a 407 - (Proxy Authentication Required) status code. The proxy MUST populate - the 407 (Proxy Authentication Required) message with a Proxy- - Authenticate header field value applicable to the proxy for the - requested resource. - - The use of Proxy-Authenticate and Proxy-Authorization parallel that - described in [17], with one difference. Proxies MUST NOT add values - to the Proxy-Authorization header field. All 407 (Proxy - Authentication Required) responses MUST be forwarded upstream toward - the UAC following the procedures for any other response. It is the - UAC's responsibility to add the Proxy-Authorization header field - value containing credentials for the realm of the proxy that has - asked for authentication. - - If a proxy were to resubmit a request adding a Proxy-Authorization - header field value, it would need to increment the CSeq in the new - request. However, this would cause the UAC that submitted the - original request to discard a response from the UAS, as the CSeq - value would be different. - - When the originating UAC receives the 407 (Proxy Authentication - Required) it SHOULD, if it is able, re-originate the request with the - proper credentials. It should follow the same procedures for the - display of the "realm" parameter that are given above for responding - to 401. - - If no credentials for a realm can be located, UACs MAY attempt to - retry the request with a username of "anonymous" and no password (a - password of ""). - - The UAC SHOULD also cache the credentials used in the re-originated - request. - - The following rule is RECOMMENDED for proxy credential caching: - - If a UA receives a Proxy-Authenticate header field value in a 401/407 - response to a request with a particular Call-ID, it should - incorporate credentials for that realm in all subsequent requests - that contain the same Call-ID. These credentials MUST NOT be cached - across dialogs; however, if a UA is configured with the realm of its - local outbound proxy, when one exists, then the UA MAY cache - - - -Rosenberg, et. al. Standards Track [Page 197] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - credentials for that realm across dialogs. Note that this does mean - a future request in a dialog could contain credentials that are not - needed by any proxy along the Route header path. - - Any UA that wishes to authenticate itself to a proxy server -- - usually, but not necessarily, after receiving a 407 (Proxy - Authentication Required) response -- MAY do so by including a Proxy- - Authorization header field value with the request. The Proxy- - Authorization request-header field allows the client to identify - itself (or its user) to a proxy that requires authentication. The - Proxy-Authorization header field value consists of credentials - containing the authentication information of the UA for the proxy - and/or realm of the resource being requested. - - A Proxy-Authorization header field value applies only to the proxy - whose realm is identified in the "realm" parameter (this proxy may - previously have demanded authentication using the Proxy-Authenticate - field). When multiple proxies are used in a chain, a Proxy- - Authorization header field value MUST NOT be consumed by any proxy - whose realm does not match the "realm" parameter specified in that - value. - - Note that if an authentication scheme that does not support realms is - used in the Proxy-Authorization header field, a proxy server MUST - attempt to parse all Proxy-Authorization header field values to - determine whether one of them has what the proxy server considers to - be valid credentials. Because this is potentially very time- - consuming in large networks, proxy servers SHOULD use an - authentication scheme that supports realms in the Proxy-Authorization - header field. - - If a request is forked (as described in Section 16.7), various proxy - servers and/or UAs may wish to challenge the UAC. In this case, the - forking proxy server is responsible for aggregating these challenges - into a single response. Each WWW-Authenticate and Proxy-Authenticate - value received in responses to the forked request MUST be placed into - the single response that is sent by the forking proxy to the UA; the - ordering of these header field values is not significant. - - When a proxy server issues a challenge in response to a request, - it will not proxy the request until the UAC has retried the - request with valid credentials. A forking proxy may forward a - request simultaneously to multiple proxy servers that require - authentication, each of which in turn will not forward the request - until the originating UAC has authenticated itself in their - respective realm. If the UAC does not provide credentials for - - - - - -Rosenberg, et. al. Standards Track [Page 198] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - each challenge, the proxy servers that issued the challenges will - not forward requests to the UA where the destination user might be - located, and therefore, the virtues of forking are largely lost. - - When resubmitting its request in response to a 401 (Unauthorized) or - 407 (Proxy Authentication Required) that contains multiple - challenges, a UAC MAY include an Authorization value for each WWW- - Authenticate value and a Proxy-Authorization value for each Proxy- - Authenticate value for which the UAC wishes to supply a credential. - As noted above, multiple credentials in a request SHOULD be - differentiated by the "realm" parameter. - - It is possible for multiple challenges associated with the same realm - to appear in the same 401 (Unauthorized) or 407 (Proxy Authentication - Required). This can occur, for example, when multiple proxies within - the same administrative domain, which use a common realm, are reached - by a forking request. When it retries a request, a UAC MAY therefore - supply multiple credentials in Authorization or Proxy-Authorization - header fields with the same "realm" parameter value. The same - credentials SHOULD be used for the same realm. - -22.4 The Digest Authentication Scheme - - This section describes the modifications and clarifications required - to apply the HTTP Digest authentication scheme to SIP. The SIP - scheme usage is almost completely identical to that for HTTP [17]. - - Since RFC 2543 is based on HTTP Digest as defined in RFC 2069 [39], - SIP servers supporting RFC 2617 MUST ensure they are backwards - compatible with RFC 2069. Procedures for this backwards - compatibility are specified in RFC 2617. Note, however, that SIP - servers MUST NOT accept or request Basic authentication. - - The rules for Digest authentication follow those defined in [17], - with "HTTP/1.1" replaced by "SIP/2.0" in addition to the following - differences: - - 1. The URI included in the challenge has the following BNF: - - URI = SIP-URI / SIPS-URI - - 2. The BNF in RFC 2617 has an error in that the 'uri' parameter - of the Authorization header field for HTTP Digest - - - - - - - - -Rosenberg, et. al. Standards Track [Page 199] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - authentication is not enclosed in quotation marks. (The - example in Section 3.5 of RFC 2617 is correct.) For SIP, the - 'uri' MUST be enclosed in quotation marks. - - 3. The BNF for digest-uri-value is: - - digest-uri-value = Request-URI ; as defined in Section 25 - - 4. The example procedure for choosing a nonce based on Etag does - not work for SIP. - - 5. The text in RFC 2617 [17] regarding cache operation does not - apply to SIP. - - 6. RFC 2617 [17] requires that a server check that the URI in the - request line and the URI included in the Authorization header - field point to the same resource. In a SIP context, these two - URIs may refer to different users, due to forwarding at some - proxy. Therefore, in SIP, a server MAY check that the - Request-URI in the Authorization header field value - corresponds to a user for whom the server is willing to accept - forwarded or direct requests, but it is not necessarily a - failure if the two fields are not equivalent. - - 7. As a clarification to the calculation of the A2 value for - message integrity assurance in the Digest authentication - scheme, implementers should assume, when the entity-body is - empty (that is, when SIP messages have no body) that the hash - of the entity-body resolves to the MD5 hash of an empty - string, or: - - H(entity-body) = MD5("") = - "d41d8cd98f00b204e9800998ecf8427e" - - 8. RFC 2617 notes that a cnonce value MUST NOT be sent in an - Authorization (and by extension Proxy-Authorization) header - field if no qop directive has been sent. Therefore, any - algorithms that have a dependency on the cnonce (including - "MD5-Sess") require that the qop directive be sent. Use of - the "qop" parameter is optional in RFC 2617 for the purposes - of backwards compatibility with RFC 2069; since RFC 2543 was - based on RFC 2069, the "qop" parameter must unfortunately - remain optional for clients and servers to receive. However, - servers MUST always send a "qop" parameter in WWW-Authenticate - and Proxy-Authenticate header field values. If a client - receives a "qop" parameter in a challenge header field, it - MUST send the "qop" parameter in any resulting authorization - header field. - - - -Rosenberg, et. al. Standards Track [Page 200] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - RFC 2543 did not allow usage of the Authentication-Info header field - (it effectively used RFC 2069). However, we now allow usage of this - header field, since it provides integrity checks over the bodies and - provides mutual authentication. RFC 2617 [17] defines mechanisms for - backwards compatibility using the qop attribute in the request. - These mechanisms MUST be used by a server to determine if the client - supports the new mechanisms in RFC 2617 that were not specified in - RFC 2069. - -23 S/MIME - - SIP messages carry MIME bodies and the MIME standard includes - mechanisms for securing MIME contents to ensure both integrity and - confidentiality (including the 'multipart/signed' and - 'application/pkcs7-mime' MIME types, see RFC 1847 [22], RFC 2630 [23] - and RFC 2633 [24]). Implementers should note, however, that there - may be rare network intermediaries (not typical proxy servers) that - rely on viewing or modifying the bodies of SIP messages (especially - SDP), and that secure MIME may prevent these sorts of intermediaries - from functioning. - - This applies particularly to certain types of firewalls. - - The PGP mechanism for encrypting the header fields and bodies of - SIP messages described in RFC 2543 has been deprecated. - -23.1 S/MIME Certificates - - The certificates that are used to identify an end-user for the - purposes of S/MIME differ from those used by servers in one important - respect - rather than asserting that the identity of the holder - corresponds to a particular hostname, these certificates assert that - the holder is identified by an end-user address. This address is - composed of the concatenation of the "userinfo" "@" and "domainname" - portions of a SIP or SIPS URI (in other words, an email address of - the form "bob@biloxi.com"), most commonly corresponding to a user's - address-of-record. - - These certificates are also associated with keys that are used to - sign or encrypt bodies of SIP messages. Bodies are signed with the - private key of the sender (who may include their public key with the - message as appropriate), but bodies are encrypted with the public key - of the intended recipient. Obviously, senders must have - foreknowledge of the public key of recipients in order to encrypt - message bodies. Public keys can be stored within a UA on a virtual - keyring. - - - - - -Rosenberg, et. al. Standards Track [Page 201] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Each user agent that supports S/MIME MUST contain a keyring - specifically for end-users' certificates. This keyring should map - between addresses of record and corresponding certificates. Over - time, users SHOULD use the same certificate when they populate the - originating URI of signaling (the From header field) with the same - address-of-record. - - Any mechanisms depending on the existence of end-user certificates - are seriously limited in that there is virtually no consolidated - authority today that provides certificates for end-user applications. - However, users SHOULD acquire certificates from known public - certificate authorities. As an alternative, users MAY create self- - signed certificates. The implications of self-signed certificates - are explored further in Section 26.4.2. Implementations may also use - pre-configured certificates in deployments in which a previous trust - relationship exists between all SIP entities. - - Above and beyond the problem of acquiring an end-user certificate, - there are few well-known centralized directories that distribute - end-user certificates. However, the holder of a certificate SHOULD - publish their certificate in any public directories as appropriate. - Similarly, UACs SHOULD support a mechanism for importing (manually or - automatically) certificates discovered in public directories - corresponding to the target URIs of SIP requests. - -23.2 S/MIME Key Exchange - - SIP itself can also be used as a means to distribute public keys in - the following manner. - - Whenever the CMS SignedData message is used in S/MIME for SIP, it - MUST contain the certificate bearing the public key necessary to - verify the signature. - - When a UAC sends a request containing an S/MIME body that initiates a - dialog, or sends a non-INVITE request outside the context of a - dialog, the UAC SHOULD structure the body as an S/MIME - 'multipart/signed' CMS SignedData body. If the desired CMS service - is EnvelopedData (and the public key of the target user is known), - the UAC SHOULD send the EnvelopedData message encapsulated within a - SignedData message. - - When a UAS receives a request containing an S/MIME CMS body that - includes a certificate, the UAS SHOULD first validate the - certificate, if possible, with any available root certificates for - certificate authorities. The UAS SHOULD also determine the subject - of the certificate (for S/MIME, the SubjectAltName will contain the - appropriate identity) and compare this value to the From header field - - - -Rosenberg, et. al. Standards Track [Page 202] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - of the request. If the certificate cannot be verified, because it is - self-signed, or signed by no known authority, or if it is verifiable - but its subject does not correspond to the From header field of - request, the UAS MUST notify its user of the status of the - certificate (including the subject of the certificate, its signer, - and any key fingerprint information) and request explicit permission - before proceeding. If the certificate was successfully verified and - the subject of the certificate corresponds to the From header field - of the SIP request, or if the user (after notification) explicitly - authorizes the use of the certificate, the UAS SHOULD add this - certificate to a local keyring, indexed by the address-of-record of - the holder of the certificate. - - When a UAS sends a response containing an S/MIME body that answers - the first request in a dialog, or a response to a non-INVITE request - outside the context of a dialog, the UAS SHOULD structure the body as - an S/MIME 'multipart/signed' CMS SignedData body. If the desired CMS - service is EnvelopedData, the UAS SHOULD send the EnvelopedData - message encapsulated within a SignedData message. - - When a UAC receives a response containing an S/MIME CMS body that - includes a certificate, the UAC SHOULD first validate the - certificate, if possible, with any appropriate root certificate. The - UAC SHOULD also determine the subject of the certificate and compare - this value to the To field of the response; although the two may very - well be different, and this is not necessarily indicative of a - security breach. If the certificate cannot be verified because it is - self-signed, or signed by no known authority, the UAC MUST notify its - user of the status of the certificate (including the subject of the - certificate, its signator, and any key fingerprint information) and - request explicit permission before proceeding. If the certificate - was successfully verified, and the subject of the certificate - corresponds to the To header field in the response, or if the user - (after notification) explicitly authorizes the use of the - certificate, the UAC SHOULD add this certificate to a local keyring, - indexed by the address-of-record of the holder of the certificate. - If the UAC had not transmitted its own certificate to the UAS in any - previous transaction, it SHOULD use a CMS SignedData body for its - next request or response. - - On future occasions, when the UA receives requests or responses that - contain a From header field corresponding to a value in its keyring, - the UA SHOULD compare the certificate offered in these messages with - the existing certificate in its keyring. If there is a discrepancy, - the UA MUST notify its user of a change of the certificate - (preferably in terms that indicate that this is a potential security - breach) and acquire the user's permission before continuing to - - - - -Rosenberg, et. al. Standards Track [Page 203] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - process the signaling. If the user authorizes this certificate, it - SHOULD be added to the keyring alongside any previous value(s) for - this address-of-record. - - Note well however, that this key exchange mechanism does not - guarantee the secure exchange of keys when self-signed certificates, - or certificates signed by an obscure authority, are used - it is - vulnerable to well-known attacks. In the opinion of the authors, - however, the security it provides is proverbially better than - nothing; it is in fact comparable to the widely used SSH application. - These limitations are explored in greater detail in Section 26.4.2. - - If a UA receives an S/MIME body that has been encrypted with a public - key unknown to the recipient, it MUST reject the request with a 493 - (Undecipherable) response. This response SHOULD contain a valid - certificate for the respondent (corresponding, if possible, to any - address of record given in the To header field of the rejected - request) within a MIME body with a 'certs-only' "smime-type" - parameter. - - A 493 (Undecipherable) sent without any certificate indicates that - the respondent cannot or will not utilize S/MIME encrypted messages, - though they may still support S/MIME signatures. - - Note that a user agent that receives a request containing an S/MIME - body that is not optional (with a Content-Disposition header - "handling" parameter of "required") MUST reject the request with a - 415 Unsupported Media Type response if the MIME type is not - understood. A user agent that receives such a response when S/MIME - is sent SHOULD notify its user that the remote device does not - support S/MIME, and it MAY subsequently resend the request without - S/MIME, if appropriate; however, this 415 response may constitute a - downgrade attack. - - If a user agent sends an S/MIME body in a request, but receives a - response that contains a MIME body that is not secured, the UAC - SHOULD notify its user that the session could not be secured. - However, if a user agent that supports S/MIME receives a request with - an unsecured body, it SHOULD NOT respond with a secured body, but if - it expects S/MIME from the sender (for example, because the sender's - From header field value corresponds to an identity on its keychain), - the UAS SHOULD notify its user that the session could not be secured. - - A number of conditions that arise in the previous text call for the - notification of the user when an anomalous certificate-management - event occurs. Users might well ask what they should do under these - circumstances. First and foremost, an unexpected change in a - certificate, or an absence of security when security is expected, are - - - -Rosenberg, et. al. Standards Track [Page 204] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - causes for caution but not necessarily indications that an attack is - in progress. Users might abort any connection attempt or refuse a - connection request they have received; in telephony parlance, they - could hang up and call back. Users may wish to find an alternate - means to contact the other party and confirm that their key has - legitimately changed. Note that users are sometimes compelled to - change their certificates, for example when they suspect that the - secrecy of their private key has been compromised. When their - private key is no longer private, users must legitimately generate a - new key and re-establish trust with any users that held their old - key. - - Finally, if during the course of a dialog a UA receives a certificate - in a CMS SignedData message that does not correspond with the - certificates previously exchanged during a dialog, the UA MUST notify - its user of the change, preferably in terms that indicate that this - is a potential security breach. - -23.3 Securing MIME bodies - - There are two types of secure MIME bodies that are of interest to - SIP: use of these bodies should follow the S/MIME specification [24] - with a few variations. - - o "multipart/signed" MUST be used only with CMS detached - signatures. - - This allows backwards compatibility with non-S/MIME- - compliant recipients. - - o S/MIME bodies SHOULD have a Content-Disposition header field, - and the value of the "handling" parameter SHOULD be "required." - - o If a UAC has no certificate on its keyring associated with the - address-of-record to which it wants to send a request, it - cannot send an encrypted "application/pkcs7-mime" MIME message. - UACs MAY send an initial request such as an OPTIONS message - with a CMS detached signature in order to solicit the - certificate of the remote side (the signature SHOULD be over a - "message/sip" body of the type described in Section 23.4). - - Note that future standardization work on S/MIME may define - non-certificate based keys. - - o Senders of S/MIME bodies SHOULD use the "SMIMECapabilities" - (see Section 2.5.2 of [24]) attribute to express their - capabilities and preferences for further communications. Note - especially that senders MAY use the "preferSignedData" - - - -Rosenberg, et. al. Standards Track [Page 205] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - capability to encourage receivers to respond with CMS - SignedData messages (for example, when sending an OPTIONS - request as described above). - - o S/MIME implementations MUST at a minimum support SHA1 as a - digital signature algorithm, and 3DES as an encryption - algorithm. All other signature and encryption algorithms MAY - be supported. Implementations can negotiate support for these - algorithms with the "SMIMECapabilities" attribute. - - o Each S/MIME body in a SIP message SHOULD be signed with only - one certificate. If a UA receives a message with multiple - signatures, the outermost signature should be treated as the - single certificate for this body. Parallel signatures SHOULD - NOT be used. - - The following is an example of an encrypted S/MIME SDP body - within a SIP message: - - INVITE sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - To: Bob - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710 - CSeq: 314159 INVITE - Max-Forwards: 70 - Contact: - Content-Type: application/pkcs7-mime; smime-type=enveloped-data; - name=smime.p7m - Content-Disposition: attachment; filename=smime.p7m - handling=required - - ******************************************************* - * Content-Type: application/sdp * - * * - * v=0 * - * o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com * - * s=- * - * t=0 0 * - * c=IN IP4 pc33.atlanta.com * - * m=audio 3456 RTP/AVP 0 1 3 99 * - * a=rtpmap:0 PCMU/8000 * - ******************************************************* - - - - - - - - -Rosenberg, et. al. Standards Track [Page 206] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -23.4 SIP Header Privacy and Integrity using S/MIME: Tunneling SIP - - As a means of providing some degree of end-to-end authentication, - integrity or confidentiality for SIP header fields, S/MIME can - encapsulate entire SIP messages within MIME bodies of type - "message/sip" and then apply MIME security to these bodies in the - same manner as typical SIP bodies. These encapsulated SIP requests - and responses do not constitute a separate dialog or transaction, - they are a copy of the "outer" message that is used to verify - integrity or to supply additional information. - - If a UAS receives a request that contains a tunneled "message/sip" - S/MIME body, it SHOULD include a tunneled "message/sip" body in the - response with the same smime-type. - - Any traditional MIME bodies (such as SDP) SHOULD be attached to the - "inner" message so that they can also benefit from S/MIME security. - Note that "message/sip" bodies can be sent as a part of a MIME - "multipart/mixed" body if any unsecured MIME types should also be - transmitted in a request. - -23.4.1 Integrity and Confidentiality Properties of SIP Headers - - When the S/MIME integrity or confidentiality mechanisms are used, - there may be discrepancies between the values in the "inner" message - and values in the "outer" message. The rules for handling any such - differences for all of the header fields described in this document - are given in this section. - - Note that for the purposes of loose timestamping, all SIP messages - that tunnel "message/sip" SHOULD contain a Date header in both the - "inner" and "outer" headers. - -23.4.1.1 Integrity - - Whenever integrity checks are performed, the integrity of a header - field should be determined by matching the value of the header field - in the signed body with that in the "outer" messages using the - comparison rules of SIP as described in 20. - - Header fields that can be legitimately modified by proxy servers are: - Request-URI, Via, Record-Route, Route, Max-Forwards, and Proxy- - Authorization. If these header fields are not intact end-to-end, - implementations SHOULD NOT consider this a breach of security. - Changes to any other header fields defined in this document - constitute an integrity violation; users MUST be notified of a - discrepancy. - - - - -Rosenberg, et. al. Standards Track [Page 207] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -23.4.1.2 Confidentiality - - When messages are encrypted, header fields may be included in the - encrypted body that are not present in the "outer" message. - - Some header fields must always have a plaintext version because they - are required header fields in requests and responses - these include: - - To, From, Call-ID, CSeq, Contact. While it is probably not useful to - provide an encrypted alternative for the Call-ID, CSeq, or Contact, - providing an alternative to the information in the "outer" To or From - is permitted. Note that the values in an encrypted body are not used - for the purposes of identifying transactions or dialogs - they are - merely informational. If the From header field in an encrypted body - differs from the value in the "outer" message, the value within the - encrypted body SHOULD be displayed to the user, but MUST NOT be used - in the "outer" header fields of any future messages. - - Primarily, a user agent will want to encrypt header fields that have - an end-to-end semantic, including: Subject, Reply-To, Organization, - Accept, Accept-Encoding, Accept-Language, Alert-Info, Error-Info, - Authentication-Info, Expires, In-Reply-To, Require, Supported, - Unsupported, Retry-After, User-Agent, Server, and Warning. If any of - these header fields are present in an encrypted body, they should be - used instead of any "outer" header fields, whether this entails - displaying the header field values to users or setting internal - states in the UA. They SHOULD NOT however be used in the "outer" - headers of any future messages. - - If present, the Date header field MUST always be the same in the - "inner" and "outer" headers. - - Since MIME bodies are attached to the "inner" message, - implementations will usually encrypt MIME-specific header fields, - including: MIME-Version, Content-Type, Content-Length, Content- - Language, Content-Encoding and Content-Disposition. The "outer" - message will have the proper MIME header fields for S/MIME bodies. - These header fields (and any MIME bodies they preface) should be - treated as normal MIME header fields and bodies received in a SIP - message. - - It is not particularly useful to encrypt the following header fields: - Min-Expires, Timestamp, Authorization, Priority, and WWW- - Authenticate. This category also includes those header fields that - can be changed by proxy servers (described in the preceding section). - UAs SHOULD never include these in an "inner" message if they are not - - - - - -Rosenberg, et. al. Standards Track [Page 208] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - included in the "outer" message. UAs that receive any of these - header fields in an encrypted body SHOULD ignore the encrypted - values. - - Note that extensions to SIP may define additional header fields; the - authors of these extensions should describe the integrity and - confidentiality properties of such header fields. If a SIP UA - encounters an unknown header field with an integrity violation, it - MUST ignore the header field. - -23.4.2 Tunneling Integrity and Authentication - - Tunneling SIP messages within S/MIME bodies can provide integrity for - SIP header fields if the header fields that the sender wishes to - secure are replicated in a "message/sip" MIME body signed with a CMS - detached signature. - - Provided that the "message/sip" body contains at least the - fundamental dialog identifiers (To, From, Call-ID, CSeq), then a - signed MIME body can provide limited authentication. At the very - least, if the certificate used to sign the body is unknown to the - recipient and cannot be verified, the signature can be used to - ascertain that a later request in a dialog was transmitted by the - same certificate-holder that initiated the dialog. If the recipient - of the signed MIME body has some stronger incentive to trust the - certificate (they were able to validate it, they acquired it from a - trusted repository, or they have used it frequently) then the - signature can be taken as a stronger assertion of the identity of the - subject of the certificate. - - In order to eliminate possible confusions about the addition or - subtraction of entire header fields, senders SHOULD replicate all - header fields from the request within the signed body. Any message - bodies that require integrity protection MUST be attached to the - "inner" message. - - If a Date header is present in a message with a signed body, the - recipient SHOULD compare the header field value with its own internal - clock, if applicable. If a significant time discrepancy is detected - (on the order of an hour or more), the user agent SHOULD alert the - user to the anomaly, and note that it is a potential security breach. - - If an integrity violation in a message is detected by its recipient, - the message MAY be rejected with a 403 (Forbidden) response if it is - a request, or any existing dialog MAY be terminated. UAs SHOULD - notify users of this circumstance and request explicit guidance on - how to proceed. - - - - -Rosenberg, et. al. Standards Track [Page 209] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The following is an example of the use of a tunneled "message/sip" - body: - - INVITE sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - To: Bob - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710 - CSeq: 314159 INVITE - Max-Forwards: 70 - Date: Thu, 21 Feb 2002 13:02:03 GMT - Contact: - Content-Type: multipart/signed; - protocol="application/pkcs7-signature"; - micalg=sha1; boundary=boundary42 - Content-Length: 568 - - --boundary42 - Content-Type: message/sip - - INVITE sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - To: Bob - From: Alice ;tag=1928301774 - Call-ID: a84b4c76e66710 - CSeq: 314159 INVITE - Max-Forwards: 70 - Date: Thu, 21 Feb 2002 13:02:03 GMT - Contact: - Content-Type: application/sdp - Content-Length: 147 - - v=0 - o=UserA 2890844526 2890844526 IN IP4 here.com - s=Session SDP - c=IN IP4 pc33.atlanta.com - t=0 0 - m=audio 49172 RTP/AVP 0 - a=rtpmap:0 PCMU/8000 - - --boundary42 - Content-Type: application/pkcs7-signature; name=smime.p7s - Content-Transfer-Encoding: base64 - Content-Disposition: attachment; filename=smime.p7s; - handling=required - - - - - - -Rosenberg, et. al. Standards Track [Page 210] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - ghyHhHUujhJhjH77n8HHGTrfvbnj756tbB9HG4VQpfyF467GhIGfHfYT6 - 4VQpfyF467GhIGfHfYT6jH77n8HHGghyHhHUujhJh756tbB9HGTrfvbnj - n8HHGTrfvhJhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHhHUujpfyF4 - 7GhIGfHfYT64VQbnj756 - - --boundary42- - -23.4.3 Tunneling Encryption - - It may also be desirable to use this mechanism to encrypt a - "message/sip" MIME body within a CMS EnvelopedData message S/MIME - body, but in practice, most header fields are of at least some use to - the network; the general use of encryption with S/MIME is to secure - message bodies like SDP rather than message headers. Some - informational header fields, such as the Subject or Organization - could perhaps warrant end-to-end security. Headers defined by future - SIP applications might also require obfuscation. - - Another possible application of encrypting header fields is selective - anonymity. A request could be constructed with a From header field - that contains no personal information (for example, - sip:anonymous@anonymizer.invalid). However, a second From header - field containing the genuine address-of-record of the originator - could be encrypted within a "message/sip" MIME body where it will - only be visible to the endpoints of a dialog. - - Note that if this mechanism is used for anonymity, the From header - field will no longer be usable by the recipient of a message as an - index to their certificate keychain for retrieving the proper - S/MIME key to associated with the sender. The message must first - be decrypted, and the "inner" From header field MUST be used as an - index. - - In order to provide end-to-end integrity, encrypted "message/sip" - MIME bodies SHOULD be signed by the sender. This creates a - "multipart/signed" MIME body that contains an encrypted body and a - signature, both of type "application/pkcs7-mime". - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 211] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - In the following example, of an encrypted and signed message, the - text boxed in asterisks ("*") is encrypted: - - INVITE sip:bob@biloxi.com SIP/2.0 - Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - To: Bob - From: Anonymous ;tag=1928301774 - Call-ID: a84b4c76e66710 - CSeq: 314159 INVITE - Max-Forwards: 70 - Date: Thu, 21 Feb 2002 13:02:03 GMT - Contact: - Content-Type: multipart/signed; - protocol="application/pkcs7-signature"; - micalg=sha1; boundary=boundary42 - Content-Length: 568 - - --boundary42 - Content-Type: application/pkcs7-mime; smime-type=enveloped-data; - name=smime.p7m - Content-Transfer-Encoding: base64 - Content-Disposition: attachment; filename=smime.p7m - handling=required - Content-Length: 231 - - *********************************************************** - * Content-Type: message/sip * - * * - * INVITE sip:bob@biloxi.com SIP/2.0 * - * Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 * - * To: Bob * - * From: Alice ;tag=1928301774 * - * Call-ID: a84b4c76e66710 * - * CSeq: 314159 INVITE * - * Max-Forwards: 70 * - * Date: Thu, 21 Feb 2002 13:02:03 GMT * - * Contact: * - * * - * Content-Type: application/sdp * - * * - * v=0 * - * o=alice 53655765 2353687637 IN IP4 pc33.atlanta.com * - * s=Session SDP * - * t=0 0 * - * c=IN IP4 pc33.atlanta.com * - * m=audio 3456 RTP/AVP 0 1 3 99 * - * a=rtpmap:0 PCMU/8000 * - *********************************************************** - - - -Rosenberg, et. al. Standards Track [Page 212] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - --boundary42 - Content-Type: application/pkcs7-signature; name=smime.p7s - Content-Transfer-Encoding: base64 - Content-Disposition: attachment; filename=smime.p7s; - handling=required - - ghyHhHUujhJhjH77n8HHGTrfvbnj756tbB9HG4VQpfyF467GhIGfHfYT6 - 4VQpfyF467GhIGfHfYT6jH77n8HHGghyHhHUujhJh756tbB9HGTrfvbnj - n8HHGTrfvhJhjH776tbB9HG4VQbnj7567GhIGfHfYT6ghyHhHUujpfyF4 - 7GhIGfHfYT64VQbnj756 - - --boundary42- - -24 Examples - - In the following examples, we often omit the message body and the - corresponding Content-Length and Content-Type header fields for - brevity. - -24.1 Registration - - Bob registers on start-up. The message flow is shown in Figure 9. - Note that the authentication usually required for registration is not - shown for simplicity. - - biloxi.com Bob's - registrar softphone - | | - | REGISTER F1 | - |<---------------| - | 200 OK F2 | - |--------------->| - - Figure 9: SIP Registration Example - - F1 REGISTER Bob -> Registrar - - REGISTER sip:registrar.biloxi.com SIP/2.0 - Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7 - Max-Forwards: 70 - To: Bob - From: Bob ;tag=456248 - Call-ID: 843817637684230@998sdasdh09 - CSeq: 1826 REGISTER - Contact: - Expires: 7200 - Content-Length: 0 - - - - -Rosenberg, et. al. Standards Track [Page 213] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The registration expires after two hours. The registrar responds - with a 200 OK: - - F2 200 OK Registrar -> Bob - - SIP/2.0 200 OK - Via: SIP/2.0/UDP bobspc.biloxi.com:5060;branch=z9hG4bKnashds7 - ;received=192.0.2.4 - To: Bob ;tag=2493k59kd - From: Bob ;tag=456248 - Call-ID: 843817637684230@998sdasdh09 - CSeq: 1826 REGISTER - Contact: - Expires: 7200 - Content-Length: 0 - -24.2 Session Setup - - This example contains the full details of the example session setup - in Section 4. The message flow is shown in Figure 1. Note that - these flows show the minimum required set of header fields - some - other header fields such as Allow and Supported would normally be - present. - -F1 INVITE Alice -> atlanta.com proxy - -INVITE sip:bob@biloxi.com SIP/2.0 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 -Max-Forwards: 70 -To: Bob -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Contact: -Content-Type: application/sdp -Content-Length: 142 - -(Alice's SDP not shown) - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 214] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -F2 100 Trying atlanta.com proxy -> Alice - -SIP/2.0 100 Trying -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Content-Length: 0 - -F3 INVITE atlanta.com proxy -> biloxi.com proxy - -INVITE sip:bob@biloxi.com SIP/2.0 -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -Max-Forwards: 69 -To: Bob -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Contact: -Content-Type: application/sdp -Content-Length: 142 - -(Alice's SDP not shown) - -F4 100 Trying biloxi.com proxy -> atlanta.com proxy - -SIP/2.0 100 Trying -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 - ;received=192.0.2.2 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Content-Length: 0 - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 215] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -F5 INVITE biloxi.com proxy -> Bob - -INVITE sip:bob@192.0.2.4 SIP/2.0 -Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1 -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 - ;received=192.0.2.2 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -Max-Forwards: 68 -To: Bob -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Contact: -Content-Type: application/sdp -Content-Length: 142 - -(Alice's SDP not shown) - -F6 180 Ringing Bob -> biloxi.com proxy - -SIP/2.0 180 Ringing -Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1 - ;received=192.0.2.3 -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 - ;received=192.0.2.2 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -Contact: -CSeq: 314159 INVITE -Content-Length: 0 - -F7 180 Ringing biloxi.com proxy -> atlanta.com proxy - -SIP/2.0 180 Ringing -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 - ;received=192.0.2.2 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -Contact: -CSeq: 314159 INVITE -Content-Length: 0 - - - -Rosenberg, et. al. Standards Track [Page 216] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -F8 180 Ringing atlanta.com proxy -> Alice - -SIP/2.0 180 Ringing -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -Contact: -CSeq: 314159 INVITE -Content-Length: 0 - -F9 200 OK Bob -> biloxi.com proxy - -SIP/2.0 200 OK -Via: SIP/2.0/UDP server10.biloxi.com;branch=z9hG4bK4b43c2ff8.1 - ;received=192.0.2.3 -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 - ;received=192.0.2.2 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Contact: -Content-Type: application/sdp -Content-Length: 131 - -(Bob's SDP not shown) - -F10 200 OK biloxi.com proxy -> atlanta.com proxy - -SIP/2.0 200 OK -Via: SIP/2.0/UDP bigbox3.site3.atlanta.com;branch=z9hG4bK77ef4c2312983.1 - ;received=192.0.2.2 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Contact: -Content-Type: application/sdp -Content-Length: 131 - -(Bob's SDP not shown) - - - - -Rosenberg, et. al. Standards Track [Page 217] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -F11 200 OK atlanta.com proxy -> Alice - -SIP/2.0 200 OK -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds8 - ;received=192.0.2.1 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 INVITE -Contact: -Content-Type: application/sdp -Content-Length: 131 - -(Bob's SDP not shown) - -F12 ACK Alice -> Bob - -ACK sip:bob@192.0.2.4 SIP/2.0 -Via: SIP/2.0/UDP pc33.atlanta.com;branch=z9hG4bKnashds9 -Max-Forwards: 70 -To: Bob ;tag=a6c85cf -From: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 314159 ACK -Content-Length: 0 - - The media session between Alice and Bob is now established. - - Bob hangs up first. Note that Bob's SIP phone maintains its own CSeq - numbering space, which, in this example, begins with 231. Since Bob - is making the request, the To and From URIs and tags have been - swapped. - -F13 BYE Bob -> Alice - -BYE sip:alice@pc33.atlanta.com SIP/2.0 -Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10 -Max-Forwards: 70 -From: Bob ;tag=a6c85cf -To: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 231 BYE -Content-Length: 0 - - - - - - - - -Rosenberg, et. al. Standards Track [Page 218] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -F14 200 OK Alice -> Bob - -SIP/2.0 200 OK -Via: SIP/2.0/UDP 192.0.2.4;branch=z9hG4bKnashds10 -From: Bob ;tag=a6c85cf -To: Alice ;tag=1928301774 -Call-ID: a84b4c76e66710 -CSeq: 231 BYE -Content-Length: 0 - - The SIP Call Flows document [40] contains further examples of SIP - messages. - -25 Augmented BNF for the SIP Protocol - - All of the mechanisms specified in this document are described in - both prose and an augmented Backus-Naur Form (BNF) defined in RFC - 2234 [10]. Section 6.1 of RFC 2234 defines a set of core rules that - are used by this specification, and not repeated here. Implementers - need to be familiar with the notation and content of RFC 2234 in - order to understand this specification. Certain basic rules are in - uppercase, such as SP, LWS, HTAB, CRLF, DIGIT, ALPHA, etc. Angle - brackets are used within definitions to clarify the use of rule - names. - - The use of square brackets is redundant syntactically. It is used as - a semantic hint that the specific parameter is optional to use. - -25.1 Basic Rules - - The following rules are used throughout this specification to - describe basic parsing constructs. The US-ASCII coded character set - is defined by ANSI X3.4-1986. - - alphanum = ALPHA / DIGIT - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 219] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Several rules are incorporated from RFC 2396 [5] but are updated to - make them compliant with RFC 2234 [10]. These include: - - reserved = ";" / "/" / "?" / ":" / "@" / "&" / "=" / "+" - / "$" / "," - unreserved = alphanum / mark - mark = "-" / "_" / "." / "!" / "~" / "*" / "'" - / "(" / ")" - escaped = "%" HEXDIG HEXDIG - - SIP header field values can be folded onto multiple lines if the - continuation line begins with a space or horizontal tab. All linear - white space, including folding, has the same semantics as SP. A - recipient MAY replace any linear white space with a single SP before - interpreting the field value or forwarding the message downstream. - This is intended to behave exactly as HTTP/1.1 as described in RFC - 2616 [8]. The SWS construct is used when linear white space is - optional, generally between tokens and separators. - - LWS = [*WSP CRLF] 1*WSP ; linear whitespace - SWS = [LWS] ; sep whitespace - - To separate the header name from the rest of value, a colon is used, - which, by the above rule, allows whitespace before, but no line - break, and whitespace after, including a linebreak. The HCOLON - defines this construct. - - HCOLON = *( SP / HTAB ) ":" SWS - - The TEXT-UTF8 rule is only used for descriptive field contents and - values that are not intended to be interpreted by the message parser. - Words of *TEXT-UTF8 contain characters from the UTF-8 charset (RFC - 2279 [7]). The TEXT-UTF8-TRIM rule is used for descriptive field - contents that are n t quoted strings, where leading and trailing LWS - is not meaningful. In this regard, SIP differs from HTTP, which uses - the ISO 8859-1 character set. - - TEXT-UTF8-TRIM = 1*TEXT-UTF8char *(*LWS TEXT-UTF8char) - TEXT-UTF8char = %x21-7E / UTF8-NONASCII - UTF8-NONASCII = %xC0-DF 1UTF8-CONT - / %xE0-EF 2UTF8-CONT - / %xF0-F7 3UTF8-CONT - / %xF8-Fb 4UTF8-CONT - / %xFC-FD 5UTF8-CONT - UTF8-CONT = %x80-BF - - - - - - -Rosenberg, et. al. Standards Track [Page 220] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - A CRLF is allowed in the definition of TEXT-UTF8-TRIM only as part of - a header field continuation. It is expected that the folding LWS - will be replaced with a single SP before interpretation of the TEXT- - UTF8-TRIM value. - - Hexadecimal numeric characters are used in several protocol elements. - Some elements (authentication) force hex alphas to be lower case. - - LHEX = DIGIT / %x61-66 ;lowercase a-f - - Many SIP header field values consist of words separated by LWS or - special characters. Unless otherwise stated, tokens are case- - insensitive. These special characters MUST be in a quoted string to - be used within a parameter value. The word construct is used in - Call-ID to allow most separators to be used. - - token = 1*(alphanum / "-" / "." / "!" / "%" / "*" - / "_" / "+" / "`" / "'" / "~" ) - separators = "(" / ")" / "<" / ">" / "@" / - "," / ";" / ":" / "\" / DQUOTE / - "/" / "[" / "]" / "?" / "=" / - "{" / "}" / SP / HTAB - word = 1*(alphanum / "-" / "." / "!" / "%" / "*" / - "_" / "+" / "`" / "'" / "~" / - "(" / ")" / "<" / ">" / - ":" / "\" / DQUOTE / - "/" / "[" / "]" / "?" / - "{" / "}" ) - - When tokens are used or separators are used between elements, - whitespace is often allowed before or after these characters: - - STAR = SWS "*" SWS ; asterisk - SLASH = SWS "/" SWS ; slash - EQUAL = SWS "=" SWS ; equal - LPAREN = SWS "(" SWS ; left parenthesis - RPAREN = SWS ")" SWS ; right parenthesis - RAQUOT = ">" SWS ; right angle quote - LAQUOT = SWS "<"; left angle quote - COMMA = SWS "," SWS ; comma - SEMI = SWS ";" SWS ; semicolon - COLON = SWS ":" SWS ; colon - LDQUOT = SWS DQUOTE; open double quotation mark - RDQUOT = DQUOTE SWS ; close double quotation mark - - - - - - - -Rosenberg, et. al. Standards Track [Page 221] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Comments can be included in some SIP header fields by surrounding the - comment text with parentheses. Comments are only allowed in fields - containing "comment" as part of their field value definition. In all - other fields, parentheses are considered part of the field value. - - comment = LPAREN *(ctext / quoted-pair / comment) RPAREN - ctext = %x21-27 / %x2A-5B / %x5D-7E / UTF8-NONASCII - / LWS - - ctext includes all chars except left and right parens and backslash. - A string of text is parsed as a single word if it is quoted using - double-quote marks. In quoted strings, quotation marks (") and - backslashes (\) need to be escaped. - - quoted-string = SWS DQUOTE *(qdtext / quoted-pair ) DQUOTE - qdtext = LWS / %x21 / %x23-5B / %x5D-7E - / UTF8-NONASCII - - The backslash character ("\") MAY be used as a single-character - quoting mechanism only within quoted-string and comment constructs. - Unlike HTTP/1.1, the characters CR and LF cannot be escaped by this - mechanism to avoid conflict with line folding and header separation. - -quoted-pair = "\" (%x00-09 / %x0B-0C - / %x0E-7F) - -SIP-URI = "sip:" [ userinfo ] hostport - uri-parameters [ headers ] -SIPS-URI = "sips:" [ userinfo ] hostport - uri-parameters [ headers ] -userinfo = ( user / telephone-subscriber ) [ ":" password ] "@" -user = 1*( unreserved / escaped / user-unreserved ) -user-unreserved = "&" / "=" / "+" / "$" / "," / ";" / "?" / "/" -password = *( unreserved / escaped / - "&" / "=" / "+" / "$" / "," ) -hostport = host [ ":" port ] -host = hostname / IPv4address / IPv6reference -hostname = *( domainlabel "." ) toplabel [ "." ] -domainlabel = alphanum - / alphanum *( alphanum / "-" ) alphanum -toplabel = ALPHA / ALPHA *( alphanum / "-" ) alphanum - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 222] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -IPv4address = 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT "." 1*3DIGIT -IPv6reference = "[" IPv6address "]" -IPv6address = hexpart [ ":" IPv4address ] -hexpart = hexseq / hexseq "::" [ hexseq ] / "::" [ hexseq ] -hexseq = hex4 *( ":" hex4) -hex4 = 1*4HEXDIG -port = 1*DIGIT - - The BNF for telephone-subscriber can be found in RFC 2806 [9]. Note, - however, that any characters allowed there that are not allowed in - the user part of the SIP URI MUST be escaped. - -uri-parameters = *( ";" uri-parameter) -uri-parameter = transport-param / user-param / method-param - / ttl-param / maddr-param / lr-param / other-param -transport-param = "transport=" - ( "udp" / "tcp" / "sctp" / "tls" - / other-transport) -other-transport = token -user-param = "user=" ( "phone" / "ip" / other-user) -other-user = token -method-param = "method=" Method -ttl-param = "ttl=" ttl -maddr-param = "maddr=" host -lr-param = "lr" -other-param = pname [ "=" pvalue ] -pname = 1*paramchar -pvalue = 1*paramchar -paramchar = param-unreserved / unreserved / escaped -param-unreserved = "[" / "]" / "/" / ":" / "&" / "+" / "$" - -headers = "?" header *( "&" header ) -header = hname "=" hvalue -hname = 1*( hnv-unreserved / unreserved / escaped ) -hvalue = *( hnv-unreserved / unreserved / escaped ) -hnv-unreserved = "[" / "]" / "/" / "?" / ":" / "+" / "$" - -SIP-message = Request / Response -Request = Request-Line - *( message-header ) - CRLF - [ message-body ] -Request-Line = Method SP Request-URI SP SIP-Version CRLF -Request-URI = SIP-URI / SIPS-URI / absoluteURI -absoluteURI = scheme ":" ( hier-part / opaque-part ) -hier-part = ( net-path / abs-path ) [ "?" query ] -net-path = "//" authority [ abs-path ] -abs-path = "/" path-segments - - - -Rosenberg, et. al. Standards Track [Page 223] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -opaque-part = uric-no-slash *uric -uric = reserved / unreserved / escaped -uric-no-slash = unreserved / escaped / ";" / "?" / ":" / "@" - / "&" / "=" / "+" / "$" / "," -path-segments = segment *( "/" segment ) -segment = *pchar *( ";" param ) -param = *pchar -pchar = unreserved / escaped / - ":" / "@" / "&" / "=" / "+" / "$" / "," -scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." ) -authority = srvr / reg-name -srvr = [ [ userinfo "@" ] hostport ] -reg-name = 1*( unreserved / escaped / "$" / "," - / ";" / ":" / "@" / "&" / "=" / "+" ) -query = *uric -SIP-Version = "SIP" "/" 1*DIGIT "." 1*DIGIT - -message-header = (Accept - / Accept-Encoding - / Accept-Language - / Alert-Info - / Allow - / Authentication-Info - / Authorization - / Call-ID - / Call-Info - / Contact - / Content-Disposition - / Content-Encoding - / Content-Language - / Content-Length - / Content-Type - / CSeq - / Date - / Error-Info - / Expires - / From - / In-Reply-To - / Max-Forwards - / MIME-Version - / Min-Expires - / Organization - / Priority - / Proxy-Authenticate - / Proxy-Authorization - / Proxy-Require - / Record-Route - / Reply-To - - - -Rosenberg, et. al. Standards Track [Page 224] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - / Require - / Retry-After - / Route - / Server - / Subject - / Supported - / Timestamp - / To - / Unsupported - / User-Agent - / Via - / Warning - / WWW-Authenticate - / extension-header) CRLF - -INVITEm = %x49.4E.56.49.54.45 ; INVITE in caps -ACKm = %x41.43.4B ; ACK in caps -OPTIONSm = %x4F.50.54.49.4F.4E.53 ; OPTIONS in caps -BYEm = %x42.59.45 ; BYE in caps -CANCELm = %x43.41.4E.43.45.4C ; CANCEL in caps -REGISTERm = %x52.45.47.49.53.54.45.52 ; REGISTER in caps -Method = INVITEm / ACKm / OPTIONSm / BYEm - / CANCELm / REGISTERm - / extension-method -extension-method = token -Response = Status-Line - *( message-header ) - CRLF - [ message-body ] - -Status-Line = SIP-Version SP Status-Code SP Reason-Phrase CRLF -Status-Code = Informational - / Redirection - / Success - / Client-Error - / Server-Error - / Global-Failure - / extension-code -extension-code = 3DIGIT -Reason-Phrase = *(reserved / unreserved / escaped - / UTF8-NONASCII / UTF8-CONT / SP / HTAB) - -Informational = "100" ; Trying - / "180" ; Ringing - / "181" ; Call Is Being Forwarded - / "182" ; Queued - / "183" ; Session Progress - - - - -Rosenberg, et. al. Standards Track [Page 225] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Success = "200" ; OK - -Redirection = "300" ; Multiple Choices - / "301" ; Moved Permanently - / "302" ; Moved Temporarily - / "305" ; Use Proxy - / "380" ; Alternative Service - -Client-Error = "400" ; Bad Request - / "401" ; Unauthorized - / "402" ; Payment Required - / "403" ; Forbidden - / "404" ; Not Found - / "405" ; Method Not Allowed - / "406" ; Not Acceptable - / "407" ; Proxy Authentication Required - / "408" ; Request Timeout - / "410" ; Gone - / "413" ; Request Entity Too Large - / "414" ; Request-URI Too Large - / "415" ; Unsupported Media Type - / "416" ; Unsupported URI Scheme - / "420" ; Bad Extension - / "421" ; Extension Required - / "423" ; Interval Too Brief - / "480" ; Temporarily not available - / "481" ; Call Leg/Transaction Does Not Exist - / "482" ; Loop Detected - / "483" ; Too Many Hops - / "484" ; Address Incomplete - / "485" ; Ambiguous - / "486" ; Busy Here - / "487" ; Request Terminated - / "488" ; Not Acceptable Here - / "491" ; Request Pending - / "493" ; Undecipherable - -Server-Error = "500" ; Internal Server Error - / "501" ; Not Implemented - / "502" ; Bad Gateway - / "503" ; Service Unavailable - / "504" ; Server Time-out - / "505" ; SIP Version not supported - / "513" ; Message Too Large - - - - - - - -Rosenberg, et. al. Standards Track [Page 226] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Global-Failure = "600" ; Busy Everywhere - / "603" ; Decline - / "604" ; Does not exist anywhere - / "606" ; Not Acceptable - -Accept = "Accept" HCOLON - [ accept-range *(COMMA accept-range) ] -accept-range = media-range *(SEMI accept-param) -media-range = ( "*/*" - / ( m-type SLASH "*" ) - / ( m-type SLASH m-subtype ) - ) *( SEMI m-parameter ) -accept-param = ("q" EQUAL qvalue) / generic-param -qvalue = ( "0" [ "." 0*3DIGIT ] ) - / ( "1" [ "." 0*3("0") ] ) -generic-param = token [ EQUAL gen-value ] -gen-value = token / host / quoted-string - -Accept-Encoding = "Accept-Encoding" HCOLON - [ encoding *(COMMA encoding) ] -encoding = codings *(SEMI accept-param) -codings = content-coding / "*" -content-coding = token - -Accept-Language = "Accept-Language" HCOLON - [ language *(COMMA language) ] -language = language-range *(SEMI accept-param) -language-range = ( ( 1*8ALPHA *( "-" 1*8ALPHA ) ) / "*" ) - -Alert-Info = "Alert-Info" HCOLON alert-param *(COMMA alert-param) -alert-param = LAQUOT absoluteURI RAQUOT *( SEMI generic-param ) - -Allow = "Allow" HCOLON [Method *(COMMA Method)] - -Authorization = "Authorization" HCOLON credentials -credentials = ("Digest" LWS digest-response) - / other-response -digest-response = dig-resp *(COMMA dig-resp) -dig-resp = username / realm / nonce / digest-uri - / dresponse / algorithm / cnonce - / opaque / message-qop - / nonce-count / auth-param -username = "username" EQUAL username-value -username-value = quoted-string -digest-uri = "uri" EQUAL LDQUOT digest-uri-value RDQUOT -digest-uri-value = rquest-uri ; Equal to request-uri as specified - by HTTP/1.1 -message-qop = "qop" EQUAL qop-value - - - -Rosenberg, et. al. Standards Track [Page 227] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -cnonce = "cnonce" EQUAL cnonce-value -cnonce-value = nonce-value -nonce-count = "nc" EQUAL nc-value -nc-value = 8LHEX -dresponse = "response" EQUAL request-digest -request-digest = LDQUOT 32LHEX RDQUOT -auth-param = auth-param-name EQUAL - ( token / quoted-string ) -auth-param-name = token -other-response = auth-scheme LWS auth-param - *(COMMA auth-param) -auth-scheme = token - -Authentication-Info = "Authentication-Info" HCOLON ainfo - *(COMMA ainfo) -ainfo = nextnonce / message-qop - / response-auth / cnonce - / nonce-count -nextnonce = "nextnonce" EQUAL nonce-value -response-auth = "rspauth" EQUAL response-digest -response-digest = LDQUOT *LHEX RDQUOT - -Call-ID = ( "Call-ID" / "i" ) HCOLON callid -callid = word [ "@" word ] - -Call-Info = "Call-Info" HCOLON info *(COMMA info) -info = LAQUOT absoluteURI RAQUOT *( SEMI info-param) -info-param = ( "purpose" EQUAL ( "icon" / "info" - / "card" / token ) ) / generic-param - -Contact = ("Contact" / "m" ) HCOLON - ( STAR / (contact-param *(COMMA contact-param))) -contact-param = (name-addr / addr-spec) *(SEMI contact-params) -name-addr = [ display-name ] LAQUOT addr-spec RAQUOT -addr-spec = SIP-URI / SIPS-URI / absoluteURI -display-name = *(token LWS)/ quoted-string - -contact-params = c-p-q / c-p-expires - / contact-extension -c-p-q = "q" EQUAL qvalue -c-p-expires = "expires" EQUAL delta-seconds -contact-extension = generic-param -delta-seconds = 1*DIGIT - -Content-Disposition = "Content-Disposition" HCOLON - disp-type *( SEMI disp-param ) -disp-type = "render" / "session" / "icon" / "alert" - / disp-extension-token - - - -Rosenberg, et. al. Standards Track [Page 228] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -disp-param = handling-param / generic-param -handling-param = "handling" EQUAL - ( "optional" / "required" - / other-handling ) -other-handling = token -disp-extension-token = token - -Content-Encoding = ( "Content-Encoding" / "e" ) HCOLON - content-coding *(COMMA content-coding) - -Content-Language = "Content-Language" HCOLON - language-tag *(COMMA language-tag) -language-tag = primary-tag *( "-" subtag ) -primary-tag = 1*8ALPHA -subtag = 1*8ALPHA - -Content-Length = ( "Content-Length" / "l" ) HCOLON 1*DIGIT -Content-Type = ( "Content-Type" / "c" ) HCOLON media-type -media-type = m-type SLASH m-subtype *(SEMI m-parameter) -m-type = discrete-type / composite-type -discrete-type = "text" / "image" / "audio" / "video" - / "application" / extension-token -composite-type = "message" / "multipart" / extension-token -extension-token = ietf-token / x-token -ietf-token = token -x-token = "x-" token -m-subtype = extension-token / iana-token -iana-token = token -m-parameter = m-attribute EQUAL m-value -m-attribute = token -m-value = token / quoted-string - -CSeq = "CSeq" HCOLON 1*DIGIT LWS Method - -Date = "Date" HCOLON SIP-date -SIP-date = rfc1123-date -rfc1123-date = wkday "," SP date1 SP time SP "GMT" -date1 = 2DIGIT SP month SP 4DIGIT - ; day month year (e.g., 02 Jun 1982) -time = 2DIGIT ":" 2DIGIT ":" 2DIGIT - ; 00:00:00 - 23:59:59 -wkday = "Mon" / "Tue" / "Wed" - / "Thu" / "Fri" / "Sat" / "Sun" -month = "Jan" / "Feb" / "Mar" / "Apr" - / "May" / "Jun" / "Jul" / "Aug" - / "Sep" / "Oct" / "Nov" / "Dec" - -Error-Info = "Error-Info" HCOLON error-uri *(COMMA error-uri) - - - -Rosenberg, et. al. Standards Track [Page 229] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -error-uri = LAQUOT absoluteURI RAQUOT *( SEMI generic-param ) - -Expires = "Expires" HCOLON delta-seconds -From = ( "From" / "f" ) HCOLON from-spec -from-spec = ( name-addr / addr-spec ) - *( SEMI from-param ) -from-param = tag-param / generic-param -tag-param = "tag" EQUAL token - -In-Reply-To = "In-Reply-To" HCOLON callid *(COMMA callid) - -Max-Forwards = "Max-Forwards" HCOLON 1*DIGIT - -MIME-Version = "MIME-Version" HCOLON 1*DIGIT "." 1*DIGIT - -Min-Expires = "Min-Expires" HCOLON delta-seconds - -Organization = "Organization" HCOLON [TEXT-UTF8-TRIM] - -Priority = "Priority" HCOLON priority-value -priority-value = "emergency" / "urgent" / "normal" - / "non-urgent" / other-priority -other-priority = token - -Proxy-Authenticate = "Proxy-Authenticate" HCOLON challenge -challenge = ("Digest" LWS digest-cln *(COMMA digest-cln)) - / other-challenge -other-challenge = auth-scheme LWS auth-param - *(COMMA auth-param) -digest-cln = realm / domain / nonce - / opaque / stale / algorithm - / qop-options / auth-param -realm = "realm" EQUAL realm-value -realm-value = quoted-string -domain = "domain" EQUAL LDQUOT URI - *( 1*SP URI ) RDQUOT -URI = absoluteURI / abs-path -nonce = "nonce" EQUAL nonce-value -nonce-value = quoted-string -opaque = "opaque" EQUAL quoted-string -stale = "stale" EQUAL ( "true" / "false" ) -algorithm = "algorithm" EQUAL ( "MD5" / "MD5-sess" - / token ) -qop-options = "qop" EQUAL LDQUOT qop-value - *("," qop-value) RDQUOT -qop-value = "auth" / "auth-int" / token - -Proxy-Authorization = "Proxy-Authorization" HCOLON credentials - - - -Rosenberg, et. al. Standards Track [Page 230] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Proxy-Require = "Proxy-Require" HCOLON option-tag - *(COMMA option-tag) -option-tag = token - -Record-Route = "Record-Route" HCOLON rec-route *(COMMA rec-route) -rec-route = name-addr *( SEMI rr-param ) -rr-param = generic-param - -Reply-To = "Reply-To" HCOLON rplyto-spec -rplyto-spec = ( name-addr / addr-spec ) - *( SEMI rplyto-param ) -rplyto-param = generic-param -Require = "Require" HCOLON option-tag *(COMMA option-tag) - -Retry-After = "Retry-After" HCOLON delta-seconds - [ comment ] *( SEMI retry-param ) - -retry-param = ("duration" EQUAL delta-seconds) - / generic-param - -Route = "Route" HCOLON route-param *(COMMA route-param) -route-param = name-addr *( SEMI rr-param ) - -Server = "Server" HCOLON server-val *(LWS server-val) -server-val = product / comment -product = token [SLASH product-version] -product-version = token - -Subject = ( "Subject" / "s" ) HCOLON [TEXT-UTF8-TRIM] - -Supported = ( "Supported" / "k" ) HCOLON - [option-tag *(COMMA option-tag)] - -Timestamp = "Timestamp" HCOLON 1*(DIGIT) - [ "." *(DIGIT) ] [ LWS delay ] -delay = *(DIGIT) [ "." *(DIGIT) ] - -To = ( "To" / "t" ) HCOLON ( name-addr - / addr-spec ) *( SEMI to-param ) -to-param = tag-param / generic-param - -Unsupported = "Unsupported" HCOLON option-tag *(COMMA option-tag) -User-Agent = "User-Agent" HCOLON server-val *(LWS server-val) - - - - - - - - -Rosenberg, et. al. Standards Track [Page 231] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Via = ( "Via" / "v" ) HCOLON via-parm *(COMMA via-parm) -via-parm = sent-protocol LWS sent-by *( SEMI via-params ) -via-params = via-ttl / via-maddr - / via-received / via-branch - / via-extension -via-ttl = "ttl" EQUAL ttl -via-maddr = "maddr" EQUAL host -via-received = "received" EQUAL (IPv4address / IPv6address) -via-branch = "branch" EQUAL token -via-extension = generic-param -sent-protocol = protocol-name SLASH protocol-version - SLASH transport -protocol-name = "SIP" / token -protocol-version = token -transport = "UDP" / "TCP" / "TLS" / "SCTP" - / other-transport -sent-by = host [ COLON port ] -ttl = 1*3DIGIT ; 0 to 255 - -Warning = "Warning" HCOLON warning-value *(COMMA warning-value) -warning-value = warn-code SP warn-agent SP warn-text -warn-code = 3DIGIT -warn-agent = hostport / pseudonym - ; the name or pseudonym of the server adding - ; the Warning header, for use in debugging -warn-text = quoted-string -pseudonym = token - -WWW-Authenticate = "WWW-Authenticate" HCOLON challenge - -extension-header = header-name HCOLON header-value -header-name = token -header-value = *(TEXT-UTF8char / UTF8-CONT / LWS) -message-body = *OCTET - -26 Security Considerations: Threat Model and Security Usage - Recommendations - - SIP is not an easy protocol to secure. Its use of intermediaries, - its multi-faceted trust relationships, its expected usage between - elements with no trust at all, and its user-to-user operation make - security far from trivial. Security solutions are needed that are - deployable today, without extensive coordination, in a wide variety - of environments and usages. In order to meet these diverse needs, - several distinct mechanisms applicable to different aspects and - usages of SIP will be required. - - - - - -Rosenberg, et. al. Standards Track [Page 232] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Note that the security of SIP signaling itself has no bearing on the - security of protocols used in concert with SIP such as RTP, or with - the security implications of any specific bodies SIP might carry - (although MIME security plays a substantial role in securing SIP). - Any media associated with a session can be encrypted end-to-end - independently of any associated SIP signaling. Media encryption is - outside the scope of this document. - - The considerations that follow first examine a set of classic threat - models that broadly identify the security needs of SIP. The set of - security services required to address these threats is then detailed, - followed by an explanation of several security mechanisms that can be - used to provide these services. Next, the requirements for - implementers of SIP are enumerated, along with exemplary deployments - in which these security mechanisms could be used to improve the - security of SIP. Some notes on privacy conclude this section. - -26.1 Attacks and Threat Models - - This section details some threats that should be common to most - deployments of SIP. These threats have been chosen specifically to - illustrate each of the security services that SIP requires. - - The following examples by no means provide an exhaustive list of the - threats against SIP; rather, these are "classic" threats that - demonstrate the need for particular security services that can - potentially prevent whole categories of threats. - - These attacks assume an environment in which attackers can - potentially read any packet on the network - it is anticipated that - SIP will frequently be used on the public Internet. Attackers on the - network may be able to modify packets (perhaps at some compromised - intermediary). Attackers may wish to steal services, eavesdrop on - communications, or disrupt sessions. - -26.1.1 Registration Hijacking - - The SIP registration mechanism allows a user agent to identify itself - to a registrar as a device at which a user (designated by an address - of record) is located. A registrar assesses the identity asserted in - the From header field of a REGISTER message to determine whether this - request can modify the contact addresses associated with the - address-of-record in the To header field. While these two fields are - frequently the same, there are many valid deployments in which a - third-party may register contacts on a user's behalf. - - - - - - -Rosenberg, et. al. Standards Track [Page 233] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The From header field of a SIP request, however, can be modified - arbitrarily by the owner of a UA, and this opens the door to - malicious registrations. An attacker that successfully impersonates - a party authorized to change contacts associated with an address-of- - record could, for example, de-register all existing contacts for a - URI and then register their own device as the appropriate contact - address, thereby directing all requests for the affected user to the - attacker's device. - - This threat belongs to a family of threats that rely on the absence - of cryptographic assurance of a request's originator. Any SIP UAS - that represents a valuable service (a gateway that interworks SIP - requests with traditional telephone calls, for example) might want to - control access to its resources by authenticating requests that it - receives. Even end-user UAs, for example SIP phones, have an - interest in ascertaining the identities of originators of requests. - - This threat demonstrates the need for security services that enable - SIP entities to authenticate the originators of requests. - -26.1.2 Impersonating a Server - - The domain to which a request is destined is generally specified in - the Request-URI. UAs commonly contact a server in this domain - directly in order to deliver a request. However, there is always a - possibility that an attacker could impersonate the remote server, and - that the UA's request could be intercepted by some other party. - - For example, consider a case in which a redirect server at one - domain, chicago.com, impersonates a redirect server at another - domain, biloxi.com. A user agent sends a request to biloxi.com, but - the redirect server at chicago.com answers with a forged response - that has appropriate SIP header fields for a response from - biloxi.com. The forged contact addresses in the redirection response - could direct the originating UA to inappropriate or insecure - resources, or simply prevent requests for biloxi.com from succeeding. - - This family of threats has a vast membership, many of which are - critical. As a converse to the registration hijacking threat, - consider the case in which a registration sent to biloxi.com is - intercepted by chicago.com, which replies to the intercepted - registration with a forged 301 (Moved Permanently) response. This - response might seem to come from biloxi.com yet designate chicago.com - as the appropriate registrar. All future REGISTER requests from the - originating UA would then go to chicago.com. - - Prevention of this threat requires a means by which UAs can - authenticate the servers to whom they send requests. - - - -Rosenberg, et. al. Standards Track [Page 234] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -26.1.3 Tampering with Message Bodies - - As a matter of course, SIP UAs route requests through trusted proxy - servers. Regardless of how that trust is established (authentication - of proxies is discussed elsewhere in this section), a UA may trust a - proxy server to route a request, but not to inspect or possibly - modify the bodies contained in that request. - - Consider a UA that is using SIP message bodies to communicate session - encryption keys for a media session. Although it trusts the proxy - server of the domain it is contacting to deliver signaling properly, - it may not want the administrators of that domain to be capable of - decrypting any subsequent media session. Worse yet, if the proxy - server were actively malicious, it could modify the session key, - either acting as a man-in-the-middle, or perhaps changing the - security characteristics requested by the originating UA. - - This family of threats applies not only to session keys, but to most - conceivable forms of content carried end-to-end in SIP. These might - include MIME bodies that should be rendered to the user, SDP, or - encapsulated telephony signals, among others. Attackers might - attempt to modify SDP bodies, for example, in order to point RTP - media streams to a wiretapping device in order to eavesdrop on - subsequent voice communications. - - Also note that some header fields in SIP are meaningful end-to-end, - for example, Subject. UAs might be protective of these header fields - as well as bodies (a malicious intermediary changing the Subject - header field might make an important request appear to be spam, for - example). However, since many header fields are legitimately - inspected or altered by proxy servers as a request is routed, not all - header fields should be secured end-to-end. - - For these reasons, the UA might want to secure SIP message bodies, - and in some limited cases header fields, end-to-end. The security - services required for bodies include confidentiality, integrity, and - authentication. These end-to-end services should be independent of - the means used to secure interactions with intermediaries such as - proxy servers. - -26.1.4 Tearing Down Sessions - - Once a dialog has been established by initial messaging, subsequent - requests can be sent that modify the state of the dialog and/or - session. It is critical that principals in a session can be certain - that such requests are not forged by attackers. - - - - - -Rosenberg, et. al. Standards Track [Page 235] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Consider a case in which a third-party attacker captures some initial - messages in a dialog shared by two parties in order to learn the - parameters of the session (To tag, From tag, and so forth) and then - inserts a BYE request into the session. The attacker could opt to - forge the request such that it seemed to come from either - participant. Once the BYE is received by its target, the session - will be torn down prematurely. - - Similar mid-session threats include the transmission of forged re- - INVITEs that alter the session (possibly to reduce session security - or redirect media streams as part of a wiretapping attack). - - The most effective countermeasure to this threat is the - authentication of the sender of the BYE. In this instance, the - recipient needs only know that the BYE came from the same party with - whom the corresponding dialog was established (as opposed to - ascertaining the absolute identity of the sender). Also, if the - attacker is unable to learn the parameters of the session due to - confidentiality, it would not be possible to forge the BYE. However, - some intermediaries (like proxy servers) will need to inspect those - parameters as the session is established. - -26.1.5 Denial of Service and Amplification - - Denial-of-service attacks focus on rendering a particular network - element unavailable, usually by directing an excessive amount of - network traffic at its interfaces. A distributed denial-of-service - attack allows one network user to cause multiple network hosts to - flood a target host with a large amount of network traffic. - - In many architectures, SIP proxy servers face the public Internet in - order to accept requests from worldwide IP endpoints. SIP creates a - number of potential opportunities for distributed denial-of-service - attacks that must be recognized and addressed by the implementers and - operators of SIP systems. - - Attackers can create bogus requests that contain a falsified source - IP address and a corresponding Via header field that identify a - targeted host as the originator of the request and then send this - request to a large number of SIP network elements, thereby using - hapless SIP UAs or proxies to generate denial-of-service traffic - aimed at the target. - - Similarly, attackers might use falsified Route header field values in - a request that identify the target host and then send such messages - to forking proxies that will amplify messaging sent to the target. - - - - - -Rosenberg, et. al. Standards Track [Page 236] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Record-Route could be used to similar effect when the attacker is - certain that the SIP dialog initiated by the request will result in - numerous transactions originating in the backwards direction. - - A number of denial-of-service attacks open up if REGISTER requests - are not properly authenticated and authorized by registrars. - Attackers could de-register some or all users in an administrative - domain, thereby preventing these users from being invited to new - sessions. An attacker could also register a large number of contacts - designating the same host for a given address-of-record in order to - use the registrar and any associated proxy servers as amplifiers in a - denial-of-service attack. Attackers might also attempt to deplete - available memory and disk resources of a registrar by registering - huge numbers of bindings. - - The use of multicast to transmit SIP requests can greatly increase - the potential for denial-of-service attacks. - - These problems demonstrate a general need to define architectures - that minimize the risks of denial-of-service, and the need to be - mindful in recommendations for security mechanisms of this class of - attacks. - -26.2 Security Mechanisms - - From the threats described above, we gather that the fundamental - security services required for the SIP protocol are: preserving the - confidentiality and integrity of messaging, preventing replay attacks - or message spoofing, providing for the authentication and privacy of - the participants in a session, and preventing denial-of-service - attacks. Bodies within SIP messages separately require the security - services of confidentiality, integrity, and authentication. - - Rather than defining new security mechanisms specific to SIP, SIP - reuses wherever possible existing security models derived from the - HTTP and SMTP space. - - Full encryption of messages provides the best means to preserve the - confidentiality of signaling - it can also guarantee that messages - are not modified by any malicious intermediaries. However, SIP - requests and responses cannot be naively encrypted end-to-end in - their entirety because message fields such as the Request-URI, Route, - and Via need to be visible to proxies in most network architectures - so that SIP requests are routed correctly. Note that proxy servers - need to modify some features of messages as well (such as adding Via - header field values) in order for SIP to function. Proxy servers - must therefore be trusted, to some degree, by SIP UAs. To this - purpose, low-layer security mechanisms for SIP are recommended, which - - - -Rosenberg, et. al. Standards Track [Page 237] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - encrypt the entire SIP requests or responses on the wire on a hop- - by-hop basis, and that allow endpoints to verify the identity of - proxy servers to whom they send requests. - - SIP entities also have a need to identify one another in a secure - fashion. When a SIP endpoint asserts the identity of its user to a - peer UA or to a proxy server, that identity should in some way be - verifiable. A cryptographic authentication mechanism is provided in - SIP to address this requirement. - - An independent security mechanism for SIP message bodies supplies an - alternative means of end-to-end mutual authentication, as well as - providing a limit on the degree to which user agents must trust - intermediaries. - -26.2.1 Transport and Network Layer Security - - Transport or network layer security encrypts signaling traffic, - guaranteeing message confidentiality and integrity. - - Oftentimes, certificates are used in the establishment of lower-layer - security, and these certificates can also be used to provide a means - of authentication in many architectures. - - Two popular alternatives for providing security at the transport and - network layer are, respectively, TLS [25] and IPSec [26]. - - IPSec is a set of network-layer protocol tools that collectively can - be used as a secure replacement for traditional IP (Internet - Protocol). IPSec is most commonly used in architectures in which a - set of hosts or administrative domains have an existing trust - relationship with one another. IPSec is usually implemented at the - operating system level in a host, or on a security gateway that - provides confidentiality and integrity for all traffic it receives - from a particular interface (as in a VPN architecture). IPSec can - also be used on a hop-by-hop basis. - - In many architectures IPSec does not require integration with SIP - applications; IPSec is perhaps best suited to deployments in which - adding security directly to SIP hosts would be arduous. UAs that - have a pre-shared keying relationship with their first-hop proxy - server are also good candidates to use IPSec. Any deployment of - IPSec for SIP would require an IPSec profile describing the protocol - tools that would be required to secure SIP. No such profile is given - in this document. - - - - - - -Rosenberg, et. al. Standards Track [Page 238] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - TLS provides transport-layer security over connection-oriented - protocols (for the purposes of this document, TCP); "tls" (signifying - TLS over TCP) can be specified as the desired transport protocol - within a Via header field value or a SIP-URI. TLS is most suited to - architectures in which hop-by-hop security is required between hosts - with no pre-existing trust association. For example, Alice trusts - her local proxy server, which after a certificate exchange decides to - trust Bob's local proxy server, which Bob trusts, hence Bob and Alice - can communicate securely. - - TLS must be tightly coupled with a SIP application. Note that - transport mechanisms are specified on a hop-by-hop basis in SIP, thus - a UA that sends requests over TLS to a proxy server has no assurance - that TLS will be used end-to-end. - - The TLS_RSA_WITH_AES_128_CBC_SHA ciphersuite [6] MUST be supported at - a minimum by implementers when TLS is used in a SIP application. For - purposes of backwards compatibility, proxy servers, redirect servers, - and registrars SHOULD support TLS_RSA_WITH_3DES_EDE_CBC_SHA. - Implementers MAY also support any other ciphersuite. - -26.2.2 SIPS URI Scheme - - The SIPS URI scheme adheres to the syntax of the SIP URI (described - in 19), although the scheme string is "sips" rather than "sip". The - semantics of SIPS are very different from the SIP URI, however. SIPS - allows resources to specify that they should be reached securely. - - A SIPS URI can be used as an address-of-record for a particular user - - the URI by which the user is canonically known (on their business - cards, in the From header field of their requests, in the To header - field of REGISTER requests). When used as the Request-URI of a - request, the SIPS scheme signifies that each hop over which the - request is forwarded, until the request reaches the SIP entity - responsible for the domain portion of the Request-URI, must be - secured with TLS; once it reaches the domain in question it is - handled in accordance with local security and routing policy, quite - possibly using TLS for any last hop to a UAS. When used by the - originator of a request (as would be the case if they employed a SIPS - URI as the address-of-record of the target), SIPS dictates that the - entire request path to the target domain be so secured. - - The SIPS scheme is applicable to many of the other ways in which SIP - URIs are used in SIP today in addition to the Request-URI, including - in addresses-of-record, contact addresses (the contents of Contact - headers, including those of REGISTER methods), and Route headers. In - each instance, the SIPS URI scheme allows these existing fields to - - - - -Rosenberg, et. al. Standards Track [Page 239] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - designate secure resources. The manner in which a SIPS URI is - dereferenced in any of these contexts has its own security properties - which are detailed in [4]. - - The use of SIPS in particular entails that mutual TLS authentication - SHOULD be employed, as SHOULD the ciphersuite - TLS_RSA_WITH_AES_128_CBC_SHA. Certificates received in the - authentication process SHOULD be validated with root certificates - held by the client; failure to validate a certificate SHOULD result - in the failure of the request. - - Note that in the SIPS URI scheme, transport is independent of TLS, - and thus "sips:alice@atlanta.com;transport=tcp" and - "sips:alice@atlanta.com;transport=sctp" are both valid (although - note that UDP is not a valid transport for SIPS). The use of - "transport=tls" has consequently been deprecated, partly because - it was specific to a single hop of the request. This is a change - since RFC 2543. - - Users that distribute a SIPS URI as an address-of-record may elect to - operate devices that refuse requests over insecure transports. - -26.2.3 HTTP Authentication - - SIP provides a challenge capability, based on HTTP authentication, - that relies on the 401 and 407 response codes as well as header - fields for carrying challenges and credentials. Without significant - modification, the reuse of the HTTP Digest authentication scheme in - SIP allows for replay protection and one-way authentication. - - The usage of Digest authentication in SIP is detailed in Section 22. - -26.2.4 S/MIME - - As is discussed above, encrypting entire SIP messages end-to-end for - the purpose of confidentiality is not appropriate because network - intermediaries (like proxy servers) need to view certain header - fields in order to route messages correctly, and if these - intermediaries are excluded from security associations, then SIP - messages will essentially be non-routable. - - However, S/MIME allows SIP UAs to encrypt MIME bodies within SIP, - securing these bodies end-to-end without affecting message headers. - S/MIME can provide end-to-end confidentiality and integrity for - message bodies, as well as mutual authentication. It is also - possible to use S/MIME to provide a form of integrity and - confidentiality for SIP header fields through SIP message tunneling. - - - - -Rosenberg, et. al. Standards Track [Page 240] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The usage of S/MIME in SIP is detailed in Section 23. - -26.3 Implementing Security Mechanisms - -26.3.1 Requirements for Implementers of SIP - - Proxy servers, redirect servers, and registrars MUST implement TLS, - and MUST support both mutual and one-way authentication. It is - strongly RECOMMENDED that UAs be capable initiating TLS; UAs MAY also - be capable of acting as a TLS server. Proxy servers, redirect - servers, and registrars SHOULD possess a site certificate whose - subject corresponds to their canonical hostname. UAs MAY have - certificates of their own for mutual authentication with TLS, but no - provisions are set forth in this document for their use. All SIP - elements that support TLS MUST have a mechanism for validating - certificates received during TLS negotiation; this entails possession - of one or more root certificates issued by certificate authorities - (preferably well-known distributors of site certificates comparable - to those that issue root certificates for web browsers). - - All SIP elements that support TLS MUST also support the SIPS URI - scheme. - - Proxy servers, redirect servers, registrars, and UAs MAY also - implement IPSec or other lower-layer security protocols. - - When a UA attempts to contact a proxy server, redirect server, or - registrar, the UAC SHOULD initiate a TLS connection over which it - will send SIP messages. In some architectures, UASs MAY receive - requests over such TLS connections as well. - - Proxy servers, redirect servers, registrars, and UAs MUST implement - Digest Authorization, encompassing all of the aspects required in 22. - Proxy servers, redirect servers, and registrars SHOULD be configured - with at least one Digest realm, and at least one "realm" string - supported by a given server SHOULD correspond to the server's - hostname or domainname. - - UAs MAY support the signing and encrypting of MIME bodies, and - transference of credentials with S/MIME as described in Section 23. - If a UA holds one or more root certificates of certificate - authorities in order to validate certificates for TLS or IPSec, it - SHOULD be capable of reusing these to verify S/MIME certificates, as - appropriate. A UA MAY hold root certificates specifically for - validating S/MIME certificates. - - - - - - -Rosenberg, et. al. Standards Track [Page 241] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Note that is it anticipated that future security extensions may - upgrade the normative strength associated with S/MIME as S/MIME - implementations appear and the problem space becomes better - understood. - -26.3.2 Security Solutions - - The operation of these security mechanisms in concert can follow the - existing web and email security models to some degree. At a high - level, UAs authenticate themselves to servers (proxy servers, - redirect servers, and registrars) with a Digest username and - password; servers authenticate themselves to UAs one hop away, or to - another server one hop away (and vice versa), with a site certificate - delivered by TLS. - - On a peer-to-peer level, UAs trust the network to authenticate one - another ordinarily; however, S/MIME can also be used to provide - direct authentication when the network does not, or if the network - itself is not trusted. - - The following is an illustrative example in which these security - mechanisms are used by various UAs and servers to prevent the sorts - of threats described in Section 26.1. While implementers and network - administrators MAY follow the normative guidelines given in the - remainder of this section, these are provided only as example - implementations. - -26.3.2.1 Registration - - When a UA comes online and registers with its local administrative - domain, it SHOULD establish a TLS connection with its registrar - (Section 10 describes how the UA reaches its registrar). The - registrar SHOULD offer a certificate to the UA, and the site - identified by the certificate MUST correspond with the domain in - which the UA intends to register; for example, if the UA intends to - register the address-of-record 'alice@atlanta.com', the site - certificate must identify a host within the atlanta.com domain (such - as sip.atlanta.com). When it receives the TLS Certificate message, - the UA SHOULD verify the certificate and inspect the site identified - by the certificate. If the certificate is invalid, revoked, or if it - does not identify the appropriate party, the UA MUST NOT send the - REGISTER message and otherwise proceed with the registration. - - When a valid certificate has been provided by the registrar, the - UA knows that the registrar is not an attacker who might redirect - the UA, steal passwords, or attempt any similar attacks. - - - - - -Rosenberg, et. al. Standards Track [Page 242] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The UA then creates a REGISTER request that SHOULD be addressed to a - Request-URI corresponding to the site certificate received from the - registrar. When the UA sends the REGISTER request over the existing - TLS connection, the registrar SHOULD challenge the request with a 401 - (Proxy Authentication Required) response. The "realm" parameter - within the Proxy-Authenticate header field of the response SHOULD - correspond to the domain previously given by the site certificate. - When the UAC receives the challenge, it SHOULD either prompt the user - for credentials or take an appropriate credential from a keyring - corresponding to the "realm" parameter in the challenge. The - username of this credential SHOULD correspond with the "userinfo" - portion of the URI in the To header field of the REGISTER request. - Once the Digest credentials have been inserted into an appropriate - Proxy-Authorization header field, the REGISTER should be resubmitted - to the registrar. - - Since the registrar requires the user agent to authenticate - itself, it would be difficult for an attacker to forge REGISTER - requests for the user's address-of-record. Also note that since - the REGISTER is sent over a confidential TLS connection, attackers - will not be able to intercept the REGISTER to record credentials - for any possible replay attack. - - Once the registration has been accepted by the registrar, the UA - SHOULD leave this TLS connection open provided that the registrar - also acts as the proxy server to which requests are sent for users in - this administrative domain. The existing TLS connection will be - reused to deliver incoming requests to the UA that has just completed - registration. - - Because the UA has already authenticated the server on the other - side of the TLS connection, all requests that come over this - connection are known to have passed through the proxy server - - attackers cannot create spoofed requests that appear to have been - sent through that proxy server. - -26.3.2.2 Interdomain Requests - - Now let's say that Alice's UA would like to initiate a session with a - user in a remote administrative domain, namely "bob@biloxi.com". We - will also say that the local administrative domain (atlanta.com) has - a local outbound proxy. - - The proxy server that handles inbound requests for an administrative - domain MAY also act as a local outbound proxy; for simplicity's sake - we'll assume this to be the case for atlanta.com (otherwise the user - agent would initiate a new TLS connection to a separate server at - this point). Assuming that the client has completed the registration - - - -Rosenberg, et. al. Standards Track [Page 243] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - process described in the preceding section, it SHOULD reuse the TLS - connection to the local proxy server when it sends an INVITE request - to another user. The UA SHOULD reuse cached credentials in the - INVITE to avoid prompting the user unnecessarily. - - When the local outbound proxy server has validated the credentials - presented by the UA in the INVITE, it SHOULD inspect the Request-URI - to determine how the message should be routed (see [4]). If the - "domainname" portion of the Request-URI had corresponded to the local - domain (atlanta.com) rather than biloxi.com, then the proxy server - would have consulted its location service to determine how best to - reach the requested user. - - Had "alice@atlanta.com" been attempting to contact, say, - "alex@atlanta.com", the local proxy would have proxied to the - request to the TLS connection Alex had established with the - registrar when he registered. Since Alex would receive this - request over his authenticated channel, he would be assured that - Alice's request had been authorized by the proxy server of the - local administrative domain. - - However, in this instance the Request-URI designates a remote domain. - The local outbound proxy server at atlanta.com SHOULD therefore - establish a TLS connection with the remote proxy server at - biloxi.com. Since both of the participants in this TLS connection - are servers that possess site certificates, mutual TLS authentication - SHOULD occur. Each side of the connection SHOULD verify and inspect - the certificate of the other, noting the domain name that appears in - the certificate for comparison with the header fields of SIP - messages. The atlanta.com proxy server, for example, SHOULD verify - at this stage that the certificate received from the remote side - corresponds with the biloxi.com domain. Once it has done so, and TLS - negotiation has completed, resulting in a secure channel between the - two proxies, the atlanta.com proxy can forward the INVITE request to - biloxi.com. - - The proxy server at biloxi.com SHOULD inspect the certificate of the - proxy server at atlanta.com in turn and compare the domain asserted - by the certificate with the "domainname" portion of the From header - field in the INVITE request. The biloxi proxy MAY have a strict - security policy that requires it to reject requests that do not match - the administrative domain from which they have been proxied. - - Such security policies could be instituted to prevent the SIP - equivalent of SMTP 'open relays' that are frequently exploited to - generate spam. - - - - - -Rosenberg, et. al. Standards Track [Page 244] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - This policy, however, only guarantees that the request came from the - domain it ascribes to itself; it does not allow biloxi.com to - ascertain how atlanta.com authenticated Alice. Only if biloxi.com - has some other way of knowing atlanta.com's authentication policies - could it possibly ascertain how Alice proved her identity. - biloxi.com might then institute an even stricter policy that forbids - requests that come from domains that are not known administratively - to share a common authentication policy with biloxi.com. - - Once the INVITE has been approved by the biloxi proxy, the proxy - server SHOULD identify the existing TLS channel, if any, associated - with the user targeted by this request (in this case - "bob@biloxi.com"). The INVITE should be proxied through this channel - to Bob. Since the request is received over a TLS connection that had - previously been authenticated as the biloxi proxy, Bob knows that the - From header field was not tampered with and that atlanta.com has - validated Alice, although not necessarily whether or not to trust - Alice's identity. - - Before they forward the request, both proxy servers SHOULD add a - Record-Route header field to the request so that all future requests - in this dialog will pass through the proxy servers. The proxy - servers can thereby continue to provide security services for the - lifetime of this dialog. If the proxy servers do not add themselves - to the Record-Route, future messages will pass directly end-to-end - between Alice and Bob without any security services (unless the two - parties agree on some independent end-to-end security such as - S/MIME). In this respect the SIP trapezoid model can provide a nice - structure where conventions of agreement between the site proxies can - provide a reasonably secure channel between Alice and Bob. - - An attacker preying on this architecture would, for example, be - unable to forge a BYE request and insert it into the signaling - stream between Bob and Alice because the attacker has no way of - ascertaining the parameters of the session and also because the - integrity mechanism transitively protects the traffic between - Alice and Bob. - -26.3.2.3 Peer-to-Peer Requests - - Alternatively, consider a UA asserting the identity - "carol@chicago.com" that has no local outbound proxy. When Carol - wishes to send an INVITE to "bob@biloxi.com", her UA SHOULD initiate - a TLS connection with the biloxi proxy directly (using the mechanism - described in [4] to determine how to best to reach the given - Request-URI). When her UA receives a certificate from the biloxi - proxy, it SHOULD be verified normally before she passes her INVITE - across the TLS connection. However, Carol has no means of proving - - - -Rosenberg, et. al. Standards Track [Page 245] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - her identity to the biloxi proxy, but she does have a CMS-detached - signature over a "message/sip" body in the INVITE. It is unlikely in - this instance that Carol would have any credentials in the biloxi.com - realm, since she has no formal association with biloxi.com. The - biloxi proxy MAY also have a strict policy that precludes it from - even bothering to challenge requests that do not have biloxi.com in - the "domainname" portion of the From header field - it treats these - users as unauthenticated. - - The biloxi proxy has a policy for Bob that all non-authenticated - requests should be redirected to the appropriate contact address - registered against 'bob@biloxi.com', namely . - Carol receives the redirection response over the TLS connection she - established with the biloxi proxy, so she trusts the veracity of the - contact address. - - Carol SHOULD then establish a TCP connection with the designated - address and send a new INVITE with a Request-URI containing the - received contact address (recomputing the signature in the body as - the request is readied). Bob receives this INVITE on an insecure - interface, but his UA inspects and, in this instance, recognizes the - From header field of the request and subsequently matches a locally - cached certificate with the one presented in the signature of the - body of the INVITE. He replies in similar fashion, authenticating - himself to Carol, and a secure dialog begins. - - Sometimes firewalls or NATs in an administrative domain could - preclude the establishment of a direct TCP connection to a UA. In - these cases, proxy servers could also potentially relay requests - to UAs in a way that has no trust implications (for example, - forgoing an existing TLS connection and forwarding the request - over cleartext TCP) as local policy dictates. - -26.3.2.4 DoS Protection - - In order to minimize the risk of a denial-of-service attack against - architectures using these security solutions, implementers should - take note of the following guidelines. - - When the host on which a SIP proxy server is operating is routable - from the public Internet, it SHOULD be deployed in an administrative - domain with defensive operational policies (blocking source-routed - traffic, preferably filtering ping traffic). Both TLS and IPSec can - also make use of bastion hosts at the edges of administrative domains - that participate in the security associations to aggregate secure - tunnels and sockets. These bastion hosts can also take the brunt of - denial-of-service attacks, ensuring that SIP hosts within the - administrative domain are not encumbered with superfluous messaging. - - - -Rosenberg, et. al. Standards Track [Page 246] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - No matter what security solutions are deployed, floods of messages - directed at proxy servers can lock up proxy server resources and - prevent desirable traffic from reaching its destination. There is a - computational expense associated with processing a SIP transaction at - a proxy server, and that expense is greater for stateful proxy - servers than it is for stateless proxy servers. Therefore, stateful - proxies are more susceptible to flooding than stateless proxy - servers. - - UAs and proxy servers SHOULD challenge questionable requests with - only a single 401 (Unauthorized) or 407 (Proxy Authentication - Required), forgoing the normal response retransmission algorithm, and - thus behaving statelessly towards unauthenticated requests. - - Retransmitting the 401 (Unauthorized) or 407 (Proxy Authentication - Required) status response amplifies the problem of an attacker - using a falsified header field value (such as Via) to direct - traffic to a third party. - - In summary, the mutual authentication of proxy servers through - mechanisms such as TLS significantly reduces the potential for rogue - intermediaries to introduce falsified requests or responses that can - deny service. This commensurately makes it harder for attackers to - make innocent SIP nodes into agents of amplification. - -26.4 Limitations - - Although these security mechanisms, when applied in a judicious - manner, can thwart many threats, there are limitations in the scope - of the mechanisms that must be understood by implementers and network - operators. - -26.4.1 HTTP Digest - - One of the primary limitations of using HTTP Digest in SIP is that - the integrity mechanisms in Digest do not work very well for SIP. - Specifically, they offer protection of the Request-URI and the method - of a message, but not for any of the header fields that UAs would - most likely wish to secure. - - The existing replay protection mechanisms described in RFC 2617 also - have some limitations for SIP. The next-nonce mechanism, for - example, does not support pipelined requests. The nonce-count - mechanism should be used for replay protection. - - Another limitation of HTTP Digest is the scope of realms. Digest is - valuable when a user wants to authenticate themselves to a resource - with which they have a pre-existing association, like a service - - - -Rosenberg, et. al. Standards Track [Page 247] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - provider of which the user is a customer (which is quite a common - scenario and thus Digest provides an extremely useful function). By - way of contrast, the scope of TLS is interdomain or multirealm, since - certificates are often globally verifiable, so that the UA can - authenticate the server with no pre-existing association. - -26.4.2 S/MIME - - The largest outstanding defect with the S/MIME mechanism is the lack - of a prevalent public key infrastructure for end users. If self- - signed certificates (or certificates that cannot be verified by one - of the participants in a dialog) are used, the SIP-based key exchange - mechanism described in Section 23.2 is susceptible to a man-in-the- - middle attack with which an attacker can potentially inspect and - modify S/MIME bodies. The attacker needs to intercept the first - exchange of keys between the two parties in a dialog, remove the - existing CMS-detached signatures from the request and response, and - insert a different CMS-detached signature containing a certificate - supplied by the attacker (but which seems to be a certificate for the - proper address-of-record). Each party will think they have exchanged - keys with the other, when in fact each has the public key of the - attacker. - - It is important to note that the attacker can only leverage this - vulnerability on the first exchange of keys between two parties - on - subsequent occasions, the alteration of the key would be noticeable - to the UAs. It would also be difficult for the attacker to remain in - the path of all future dialogs between the two parties over time (as - potentially days, weeks, or years pass). - - SSH is susceptible to the same man-in-the-middle attack on the first - exchange of keys; however, it is widely acknowledged that while SSH - is not perfect, it does improve the security of connections. The use - of key fingerprints could provide some assistance to SIP, just as it - does for SSH. For example, if two parties use SIP to establish a - voice communications session, each could read off the fingerprint of - the key they received from the other, which could be compared against - the original. It would certainly be more difficult for the man-in- - the-middle to emulate the voices of the participants than their - signaling (a practice that was used with the Clipper chip-based - secure telephone). - - The S/MIME mechanism allows UAs to send encrypted requests without - preamble if they possess a certificate for the destination address- - of-record on their keyring. However, it is possible that any - particular device registered for an address-of-record will not hold - the certificate that has been previously employed by the device's - current user, and that it will therefore be unable to process an - - - -Rosenberg, et. al. Standards Track [Page 248] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - encrypted request properly, which could lead to some avoidable error - signaling. This is especially likely when an encrypted request is - forked. - - The keys associated with S/MIME are most useful when associated with - a particular user (an address-of-record) rather than a device (a UA). - When users move between devices, it may be difficult to transport - private keys securely between UAs; how such keys might be acquired by - a device is outside the scope of this document. - - Another, more prosaic difficulty with the S/MIME mechanism is that it - can result in very large messages, especially when the SIP tunneling - mechanism described in Section 23.4 is used. For that reason, it is - RECOMMENDED that TCP should be used as a transport protocol when - S/MIME tunneling is employed. - -26.4.3 TLS - - The most commonly voiced concern about TLS is that it cannot run over - UDP; TLS requires a connection-oriented underlying transport - protocol, which for the purposes of this document means TCP. - - It may also be arduous for a local outbound proxy server and/or - registrar to maintain many simultaneous long-lived TLS connections - with numerous UAs. This introduces some valid scalability concerns, - especially for intensive ciphersuites. Maintaining redundancy of - long-lived TLS connections, especially when a UA is solely - responsible for their establishment, could also be cumbersome. - - TLS only allows SIP entities to authenticate servers to which they - are adjacent; TLS offers strictly hop-by-hop security. Neither TLS, - nor any other mechanism specified in this document, allows clients to - authenticate proxy servers to whom they cannot form a direct TCP - connection. - -26.4.4 SIPS URIs - - Actually using TLS on every segment of a request path entails that - the terminating UAS must be reachable over TLS (perhaps registering - with a SIPS URI as a contact address). This is the preferred use of - SIPS. Many valid architectures, however, use TLS to secure part of - the request path, but rely on some other mechanism for the final hop - to a UAS, for example. Thus SIPS cannot guarantee that TLS usage - will be truly end-to-end. Note that since many UAs will not accept - incoming TLS connections, even those UAs that do support TLS may be - required to maintain persistent TLS connections as described in the - TLS limitations section above in order to receive requests over TLS - as a UAS. - - - -Rosenberg, et. al. Standards Track [Page 249] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Location services are not required to provide a SIPS binding for a - SIPS Request-URI. Although location services are commonly populated - by user registrations (as described in Section 10.2.1), various other - protocols and interfaces could conceivably supply contact addresses - for an AOR, and these tools are free to map SIPS URIs to SIP URIs as - appropriate. When queried for bindings, a location service returns - its contact addresses without regard for whether it received a - request with a SIPS Request-URI. If a redirect server is accessing - the location service, it is up to the entity that processes the - Contact header field of a redirection to determine the propriety of - the contact addresses. - - Ensuring that TLS will be used for all of the request segments up to - the target domain is somewhat complex. It is possible that - cryptographically authenticated proxy servers along the way that are - non-compliant or compromised may choose to disregard the forwarding - rules associated with SIPS (and the general forwarding rules in - Section 16.6). Such malicious intermediaries could, for example, - retarget a request from a SIPS URI to a SIP URI in an attempt to - downgrade security. - - Alternatively, an intermediary might legitimately retarget a request - from a SIP to a SIPS URI. Recipients of a request whose Request-URI - uses the SIPS URI scheme thus cannot assume on the basis of the - Request-URI alone that SIPS was used for the entire request path - (from the client onwards). - - To address these concerns, it is RECOMMENDED that recipients of a - request whose Request-URI contains a SIP or SIPS URI inspect the To - header field value to see if it contains a SIPS URI (though note that - it does not constitute a breach of security if this URI has the same - scheme but is not equivalent to the URI in the To header field). - Although clients may choose to populate the Request-URI and To header - field of a request differently, when SIPS is used this disparity - could be interpreted as a possible security violation, and the - request could consequently be rejected by its recipient. Recipients - MAY also inspect the Via header chain in order to double-check - whether or not TLS was used for the entire request path until the - local administrative domain was reached. S/MIME may also be used by - the originating UAC to help ensure that the original form of the To - header field is carried end-to-end. - - If the UAS has reason to believe that the scheme of the Request-URI - has been improperly modified in transit, the UA SHOULD notify its - user of a potential security breach. - - - - - - -Rosenberg, et. al. Standards Track [Page 250] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - As a further measure to prevent downgrade attacks, entities that - accept only SIPS requests MAY also refuse connections on insecure - ports. - - End users will undoubtedly discern the difference between SIPS and - SIP URIs, and they may manually edit them in response to stimuli. - This can either benefit or degrade security. For example, if an - attacker corrupts a DNS cache, inserting a fake record set that - effectively removes all SIPS records for a proxy server, then any - SIPS requests that traverse this proxy server may fail. When a user, - however, sees that repeated calls to a SIPS AOR are failing, they - could on some devices manually convert the scheme from SIPS to SIP - and retry. Of course, there are some safeguards against this (if the - destination UA is truly paranoid it could refuse all non-SIPS - requests), but it is a limitation worth noting. On the bright side, - users might also divine that 'SIPS' would be valid even when they are - presented only with a SIP URI. - -26.5 Privacy - - SIP messages frequently contain sensitive information about their - senders - not just what they have to say, but with whom they - communicate, when they communicate and for how long, and from where - they participate in sessions. Many applications and their users - require that this sort of private information be hidden from any - parties that do not need to know it. - - Note that there are also less direct ways in which private - information can be divulged. If a user or service chooses to be - reachable at an address that is guessable from the person's name and - organizational affiliation (which describes most addresses-of- - record), the traditional method of ensuring privacy by having an - unlisted "phone number" is compromised. A user location service can - infringe on the privacy of the recipient of a session invitation by - divulging their specific whereabouts to the caller; an implementation - consequently SHOULD be able to restrict, on a per-user basis, what - kind of location and availability information is given out to certain - classes of callers. This is a whole class of problem that is - expected to be studied further in ongoing SIP work. - - In some cases, users may want to conceal personal information in - header fields that convey identity. This can apply not only to the - From and related headers representing the originator of the request, - but also the To - it may not be appropriate to convey to the final - destination a speed-dialing nickname, or an unexpanded identifier for - a group of targets, either of which would be removed from the - Request-URI as the request is routed, but not changed in the To - - - - -Rosenberg, et. al. Standards Track [Page 251] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - header field if the two were initially identical. Thus it MAY be - desirable for privacy reasons to create a To header field that - differs from the Request-URI. - -27 IANA Considerations - - All method names, header field names, status codes, and option tags - used in SIP applications are registered with IANA through - instructions in an IANA Considerations section in an RFC. - - The specification instructs the IANA to create four new sub- - registries under http://www.iana.org/assignments/sip-parameters: - Option Tags, Warning Codes (warn-codes), Methods and Response Codes, - added to the sub-registry of Header Fields that is already present - there. - -27.1 Option Tags - - This specification establishes the Option Tags sub-registry under - http://www.iana.org/assignments/sip-parameters. - - Option tags are used in header fields such as Require, Supported, - Proxy-Require, and Unsupported in support of SIP compatibility - mechanisms for extensions (Section 19.2). The option tag itself is a - string that is associated with a particular SIP option (that is, an - extension). It identifies the option to SIP endpoints. - - Option tags are registered by the IANA when they are published in - standards track RFCs. The IANA Considerations section of the RFC - must include the following information, which appears in the IANA - registry along with the RFC number of the publication. - - o Name of the option tag. The name MAY be of any length, but - SHOULD be no more than twenty characters long. The name MUST - consist of alphanum (Section 25) characters only. - - o Descriptive text that describes the extension. - -27.2 Warn-Codes - - This specification establishes the Warn-codes sub-registry under - http://www.iana.org/assignments/sip-parameters and initiates its - population with the warn-codes listed in Section 20.43. Additional - warn-codes are registered by RFC publication. - - - - - - - -Rosenberg, et. al. Standards Track [Page 252] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - The descriptive text for the table of warn-codes is: - - Warning codes provide information supplemental to the status code in - SIP response messages when the failure of the transaction results - from a Session Description Protocol (SDP) (RFC 2327 [1]) problem. - - The "warn-code" consists of three digits. A first digit of "3" - indicates warnings specific to SIP. Until a future specification - describes uses of warn-codes other than 3xx, only 3xx warn-codes may - be registered. - - Warnings 300 through 329 are reserved for indicating problems with - keywords in the session description, 330 through 339 are warnings - related to basic network services requested in the session - description, 370 through 379 are warnings related to quantitative QoS - parameters requested in the session description, and 390 through 399 - are miscellaneous warnings that do not fall into one of the above - categories. - -27.3 Header Field Names - - This obsoletes the IANA instructions about the header sub-registry - under http://www.iana.org/assignments/sip-parameters. - - The following information needs to be provided in an RFC publication - in order to register a new header field name: - - o The RFC number in which the header is registered; - - o the name of the header field being registered; - - o a compact form version for that header field, if one is - defined; - - Some common and widely used header fields MAY be assigned one-letter - compact forms (Section 7.3.3). Compact forms can only be assigned - after SIP working group review, followed by RFC publication. - -27.4 Method and Response Codes - - This specification establishes the Method and Response-Code sub- - registries under http://www.iana.org/assignments/sip-parameters and - initiates their population as follows. The initial Methods table is: - - - - - - - - -Rosenberg, et. al. Standards Track [Page 253] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - INVITE [RFC3261] - ACK [RFC3261] - BYE [RFC3261] - CANCEL [RFC3261] - REGISTER [RFC3261] - OPTIONS [RFC3261] - INFO [RFC2976] - - The response code table is initially populated from Section 21, the - portions labeled Informational, Success, Redirection, Client-Error, - Server-Error, and Global-Failure. The table has the following - format: - - Type (e.g., Informational) - Number Default Reason Phrase [RFC3261] - - The following information needs to be provided in an RFC publication - in order to register a new response code or method: - - o The RFC number in which the method or response code is - registered; - - o the number of the response code or name of the method being - registered; - - o the default reason phrase for that response code, if - applicable; - -27.5 The "message/sip" MIME type. - - This document registers the "message/sip" MIME media type in order to - allow SIP messages to be tunneled as bodies within SIP, primarily for - end-to-end security purposes. This media type is defined by the - following information: - - Media type name: message - Media subtype name: sip - Required parameters: none - - Optional parameters: version - version: The SIP-Version number of the enclosed message (e.g., - "2.0"). If not present, the version defaults to "2.0". - Encoding scheme: SIP messages consist of an 8-bit header - optionally followed by a binary MIME data object. As such, SIP - messages must be treated as binary. Under normal circumstances - SIP messages are transported over binary-capable transports, no - special encodings are needed. - - - - -Rosenberg, et. al. Standards Track [Page 254] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Security considerations: see below - Motivation and examples of this usage as a security mechanism - in concert with S/MIME are given in 23.4. - -27.6 New Content-Disposition Parameter Registrations - - This document also registers four new Content-Disposition header - "disposition-types": alert, icon, session and render. The authors - request that these values be recorded in the IANA registry for - Content-Dispositions. - - Descriptions of these "disposition-types", including motivation and - examples, are given in Section 20.11. - - Short descriptions suitable for the IANA registry are: - - alert the body is a custom ring tone to alert the user - icon the body is displayed as an icon to the user - render the body should be displayed to the user - session the body describes a communications session, for - example, as RFC 2327 SDP body - -28 Changes From RFC 2543 - - This RFC revises RFC 2543. It is mostly backwards compatible with - RFC 2543. The changes described here fix many errors discovered in - RFC 2543 and provide information on scenarios not detailed in RFC - 2543. The protocol has been presented in a more cleanly layered - model here. - - We break the differences into functional behavior that is a - substantial change from RFC 2543, which has impact on - interoperability or correct operation in some cases, and functional - behavior that is different from RFC 2543 but not a potential source - of interoperability problems. There have been countless - clarifications as well, which are not documented here. - -28.1 Major Functional Changes - - o When a UAC wishes to terminate a call before it has been answered, - it sends CANCEL. If the original INVITE still returns a 2xx, the - UAC then sends BYE. BYE can only be sent on an existing call leg - (now called a dialog in this RFC), whereas it could be sent at any - time in RFC 2543. - - o The SIP BNF was converted to be RFC 2234 compliant. - - - - - -Rosenberg, et. al. Standards Track [Page 255] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o SIP URL BNF was made more general, allowing a greater set of - characters in the user part. Furthermore, comparison rules were - simplified to be primarily case-insensitive, and detailed handling - of comparison in the presence of parameters was described. The - most substantial change is that a URI with a parameter with the - default value does not match a URI without that parameter. - - o Removed Via hiding. It had serious trust issues, since it relied - on the next hop to perform the obfuscation process. Instead, Via - hiding can be done as a local implementation choice in stateful - proxies, and thus is no longer documented. - - o In RFC 2543, CANCEL and INVITE transactions were intermingled. - They are separated now. When a user sends an INVITE and then a - CANCEL, the INVITE transaction still terminates normally. A UAS - needs to respond to the original INVITE request with a 487 - response. - - o Similarly, CANCEL and BYE transactions were intermingled; RFC 2543 - allowed the UAS not to send a response to INVITE when a BYE was - received. That is disallowed here. The original INVITE needs a - response. - - o In RFC 2543, UAs needed to support only UDP. In this RFC, UAs - need to support both UDP and TCP. - - o In RFC 2543, a forking proxy only passed up one challenge from - downstream elements in the event of multiple challenges. In this - RFC, proxies are supposed to collect all challenges and place them - into the forwarded response. - - o In Digest credentials, the URI needs to be quoted; this is unclear - from RFC 2617 and RFC 2069 which are both inconsistent on it. - - o SDP processing has been split off into a separate specification - [13], and more fully specified as a formal offer/answer exchange - process that is effectively tunneled through SIP. SDP is allowed - in INVITE/200 or 200/ACK for baseline SIP implementations; RFC - 2543 alluded to the ability to use it in INVITE, 200, and ACK in a - single transaction, but this was not well specified. More complex - SDP usages are allowed in extensions. - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 256] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o Added full support for IPv6 in URIs and in the Via header field. - Support for IPv6 in Via has required that its header field - parameters allow the square bracket and colon characters. These - characters were previously not permitted. In theory, this could - cause interop problems with older implementations. However, we - have observed that most implementations accept any non-control - ASCII character in these parameters. - - o DNS SRV procedure is now documented in a separate specification - [4]. This procedure uses both SRV and NAPTR resource records and - no longer combines data from across SRV records as described in - RFC 2543. - - o Loop detection has been made optional, supplanted by a mandatory - usage of Max-Forwards. The loop detection procedure in RFC 2543 - had a serious bug which would report "spirals" as an error - condition when it was not. The optional loop detection procedure - is more fully and correctly specified here. - - o Usage of tags is now mandatory (they were optional in RFC 2543), - as they are now the fundamental building blocks of dialog - identification. - - o Added the Supported header field, allowing for clients to indicate - what extensions are supported to a server, which can apply those - extensions to the response, and indicate their usage with a - Require in the response. - - o Extension parameters were missing from the BNF for several header - fields, and they have been added. - - o Handling of Route and Record-Route construction was very - underspecified in RFC 2543, and also not the right approach. It - has been substantially reworked in this specification (and made - vastly simpler), and this is arguably the largest change. - Backwards compatibility is still provided for deployments that do - not use "pre-loaded routes", where the initial request has a set - of Route header field values obtained in some way outside of - Record-Route. In those situations, the new mechanism is not - interoperable. - - o In RFC 2543, lines in a message could be terminated with CR, LF, - or CRLF. This specification only allows CRLF. - - - - - - - - -Rosenberg, et. al. Standards Track [Page 257] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o Usage of Route in CANCEL and ACK was not well defined in RFC 2543. - It is now well specified; if a request had a Route header field, - its CANCEL or ACK for a non-2xx response to the request need to - carry the same Route header field values. ACKs for 2xx responses - use the Route values learned from the Record-Route of the 2xx - responses. - - o RFC 2543 allowed multiple requests in a single UDP packet. This - usage has been removed. - - o Usage of absolute time in the Expires header field and parameter - has been removed. It caused interoperability problems in elements - that were not time synchronized, a common occurrence. Relative - times are used instead. - - o The branch parameter of the Via header field value is now - mandatory for all elements to use. It now plays the role of a - unique transaction identifier. This avoids the complex and bug- - laden transaction identification rules from RFC 2543. A magic - cookie is used in the parameter value to determine if the previous - hop has made the parameter globally unique, and comparison falls - back to the old rules when it is not present. Thus, - interoperability is assured. - - o In RFC 2543, closure of a TCP connection was made equivalent to a - CANCEL. This was nearly impossible to implement (and wrong) for - TCP connections between proxies. This has been eliminated, so - that there is no coupling between TCP connection state and SIP - processing. - - o RFC 2543 was silent on whether a UA could initiate a new - transaction to a peer while another was in progress. That is now - specified here. It is allowed for non-INVITE requests, disallowed - for INVITE. - - o PGP was removed. It was not sufficiently specified, and not - compatible with the more complete PGP MIME. It was replaced with - S/MIME. - - o Added the "sips" URI scheme for end-to-end TLS. This scheme is - not backwards compatible with RFC 2543. Existing elements that - receive a request with a SIPS URI scheme in the Request-URI will - likely reject the request. This is actually a feature; it ensures - that a call to a SIPS URI is only delivered if all path hops can - be secured. - - - - - - -Rosenberg, et. al. Standards Track [Page 258] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o Additional security features were added with TLS, and these are - described in a much larger and complete security considerations - section. - - o In RFC 2543, a proxy was not required to forward provisional - responses from 101 to 199 upstream. This was changed to MUST. - This is important, since many subsequent features depend on - delivery of all provisional responses from 101 to 199. - - o Little was said about the 503 response code in RFC 2543. It has - since found substantial use in indicating failure or overload - conditions in proxies. This requires somewhat special treatment. - Specifically, receipt of a 503 should trigger an attempt to - contact the next element in the result of a DNS SRV lookup. Also, - 503 response is only forwarded upstream by a proxy under certain - conditions. - - o RFC 2543 defined, but did no sufficiently specify, a mechanism for - UA authentication of a server. That has been removed. Instead, - the mutual authentication procedures of RFC 2617 are allowed. - - o A UA cannot send a BYE for a call until it has received an ACK for - the initial INVITE. This was allowed in RFC 2543 but leads to a - potential race condition. - - o A UA or proxy cannot send CANCEL for a transaction until it gets a - provisional response for the request. This was allowed in RFC - 2543 but leads to potential race conditions. - - o The action parameter in registrations has been deprecated. It was - insufficient for any useful services, and caused conflicts when - application processing was applied in proxies. - - o RFC 2543 had a number of special cases for multicast. For - example, certain responses were suppressed, timers were adjusted, - and so on. Multicast now plays a more limited role, and the - protocol operation is unaffected by usage of multicast as opposed - to unicast. The limitations as a result of that are documented. - - o Basic authentication has been removed entirely and its usage - forbidden. - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 259] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - o Proxies no longer forward a 6xx immediately on receiving it. - Instead, they CANCEL pending branches immediately. This avoids a - potential race condition that would result in a UAC getting a 6xx - followed by a 2xx. In all cases except this race condition, the - result will be the same - the 6xx is forwarded upstream. - - o RFC 2543 did not address the problem of request merging. This - occurs when a request forks at a proxy and later rejoins at an - element. Handling of merging is done only at a UA, and procedures - are defined for rejecting all but the first request. - -28.2 Minor Functional Changes - - o Added the Alert-Info, Error-Info, and Call-Info header fields for - optional content presentation to users. - - o Added the Content-Language, Content-Disposition and MIME-Version - header fields. - - o Added a "glare handling" mechanism to deal with the case where - both parties send each other a re-INVITE simultaneously. It uses - the new 491 (Request Pending) error code. - - o Added the In-Reply-To and Reply-To header fields for supporting - the return of missed calls or messages at a later time. - - o Added TLS and SCTP as valid SIP transports. - - o There were a variety of mechanisms described for handling failures - at any time during a call; those are now generally unified. BYE - is sent to terminate. - - o RFC 2543 mandated retransmission of INVITE responses over TCP, but - noted it was really only needed for 2xx. That was an artifact of - insufficient protocol layering. With a more coherent transaction - layer defined here, that is no longer needed. Only 2xx responses - to INVITEs are retransmitted over TCP. - - o Client and server transaction machines are now driven based on - timeouts rather than retransmit counts. This allows the state - machines to be properly specified for TCP and UDP. - - o The Date header field is used in REGISTER responses to provide a - simple means for auto-configuration of dates in user agents. - - o Allowed a registrar to reject registrations with expirations that - are too short in duration. Defined the 423 response code and the - Min-Expires for this purpose. - - - -Rosenberg, et. al. Standards Track [Page 260] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -29 Normative References - - [1] Handley, M. and V. Jacobson, "SDP: Session Description - Protocol", RFC 2327, April 1998. - - [2] Bradner, S., "Key words for use in RFCs to Indicate Requirement - Levels", BCP 14, RFC 2119, March 1997. - - [3] Resnick, P., "Internet Message Format", RFC 2822, April 2001. - - [4] Rosenberg, J. and H. Schulzrinne, "SIP: Locating SIP Servers", - RFC 3263, June 2002. - - [5] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform Resource - Identifiers (URI): Generic Syntax", RFC 2396, August 1998. - - [6] Chown, P., "Advanced Encryption Standard (AES) Ciphersuites for - Transport Layer Security (TLS)", RFC 3268, June 2002. - - [7] Yergeau, F., "UTF-8, a transformation format of ISO 10646", RFC - 2279, January 1998. - - [8] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., Masinter, L., - Leach, P. and T. Berners-Lee, "Hypertext Transfer Protocol -- - HTTP/1.1", RFC 2616, June 1999. - - [9] Vaha-Sipila, A., "URLs for Telephone Calls", RFC 2806, April - 2000. - - [10] Crocker, D. and P. Overell, "Augmented BNF for Syntax - Specifications: ABNF", RFC 2234, November 1997. - - [11] Freed, F. and N. Borenstein, "Multipurpose Internet Mail - Extensions (MIME) Part Two: Media Types", RFC 2046, November - 1996. - - [12] Eastlake, D., Crocker, S. and J. Schiller, "Randomness - Recommendations for Security", RFC 1750, December 1994. - - [13] Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model with - SDP", RFC 3264, June 2002. - - [14] Postel, J., "User Datagram Protocol", STD 6, RFC 768, August - 1980. - - [15] Postel, J., "DoD Standard Transmission Control Protocol", RFC - 761, January 1980. - - - - -Rosenberg, et. al. Standards Track [Page 261] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - [16] Stewart, R., Xie, Q., Morneault, K., Sharp, C., Schwarzbauer, - H., Taylor, T., Rytina, I., Kalla, M., Zhang, L. and V. Paxson, - "Stream Control Transmission Protocol", RFC 2960, October 2000. - - [17] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, S., - Leach, P., Luotonen, A. and L. Stewart, "HTTP authentication: - Basic and Digest Access Authentication", RFC 2617, June 1999. - - [18] Troost, R., Dorner, S. and K. Moore, "Communicating Presentation - Information in Internet Messages: The Content-Disposition Header - Field", RFC 2183, August 1997. - - [19] Zimmerer, E., Peterson, J., Vemuri, A., Ong, L., Audet, F., - Watson, M. and M. Zonoun, "MIME media types for ISUP and QSIG - Objects", RFC 3204, December 2001. - - [20] Braden, R., "Requirements for Internet Hosts - Application and - Support", STD 3, RFC 1123, October 1989. - - [21] Alvestrand, H., "IETF Policy on Character Sets and Languages", - BCP 18, RFC 2277, January 1998. - - [22] Galvin, J., Murphy, S., Crocker, S. and N. Freed, "Security - Multiparts for MIME: Multipart/Signed and Multipart/Encrypted", - RFC 1847, October 1995. - - [23] Housley, R., "Cryptographic Message Syntax", RFC 2630, June - 1999. - - [24] Ramsdell B., "S/MIME Version 3 Message Specification", RFC 2633, - June 1999. - - [25] Dierks, T. and C. Allen, "The TLS Protocol Version 1.0", RFC - 2246, January 1999. - - [26] Kent, S. and R. Atkinson, "Security Architecture for the - Internet Protocol", RFC 2401, November 1998. - -30 Informative References - - [27] R. Pandya, "Emerging mobile and personal communication systems," - IEEE Communications Magazine, Vol. 33, pp. 44--52, June 1995. - - [28] Schulzrinne, H., Casner, S., Frederick, R. and V. Jacobson, - "RTP: A Transport Protocol for Real-Time Applications", RFC - 1889, January 1996. - - - - - -Rosenberg, et. al. Standards Track [Page 262] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - [29] Schulzrinne, H., Rao, R. and R. Lanphier, "Real Time Streaming - Protocol (RTSP)", RFC 2326, April 1998. - - [30] Cuervo, F., Greene, N., Rayhan, A., Huitema, C., Rosen, B. and - J. Segers, "Megaco Protocol Version 1.0", RFC 3015, November - 2000. - - [31] Handley, M., Schulzrinne, H., Schooler, E. and J. Rosenberg, - "SIP: Session Initiation Protocol", RFC 2543, March 1999. - - [32] Hoffman, P., Masinter, L. and J. Zawinski, "The mailto URL - scheme", RFC 2368, July 1998. - - [33] E. M. Schooler, "A multicast user directory service for - synchronous rendezvous," Master's Thesis CS-TR-96-18, Department - of Computer Science, California Institute of Technology, - Pasadena, California, Aug. 1996. - - [34] Donovan, S., "The SIP INFO Method", RFC 2976, October 2000. - - [35] Rivest, R., "The MD5 Message-Digest Algorithm", RFC 1321, April - 1992. - - [36] Dawson, F. and T. Howes, "vCard MIME Directory Profile", RFC - 2426, September 1998. - - [37] Good, G., "The LDAP Data Interchange Format (LDIF) - Technical - Specification", RFC 2849, June 2000. - - [38] Palme, J., "Common Internet Message Headers", RFC 2076, - February 1997. - - [39] Franks, J., Hallam-Baker, P., Hostetler, J., Leach, P., - Luotonen, A., Sink, E. and L. Stewart, "An Extension to HTTP: - Digest Access Authentication", RFC 2069, January 1997. - - [40] Johnston, A., Donovan, S., Sparks, R., Cunningham, C., Willis, - D., Rosenberg, J., Summers, K. and H. Schulzrinne, "SIP Call - Flow Examples", Work in Progress. - - [41] E. M. Schooler, "Case study: multimedia conference control in a - packet-switched teleconferencing system," Journal of - Internetworking: Research and Experience, Vol. 4, pp. 99--120, - June 1993. ISI reprint series ISI/RS-93-359. - - - - - - - -Rosenberg, et. al. Standards Track [Page 263] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - [42] H. Schulzrinne, "Personal mobility for multimedia services in - the Internet," in European Workshop on Interactive Distributed - Multimedia Systems and Services (IDMS), (Berlin, Germany), Mar. - 1996. - - [43] Floyd, S., "Congestion Control Principles", RFC 2914, September - 2000. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 264] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -A Table of Timer Values - - Table 4 summarizes the meaning and defaults of the various timers - used by this specification. - -Timer Value Section Meaning ----------------------------------------------------------------------- -T1 500ms default Section 17.1.1.1 RTT Estimate -T2 4s Section 17.1.2.2 The maximum retransmit - interval for non-INVITE - requests and INVITE - responses -T4 5s Section 17.1.2.2 Maximum duration a - message will - remain in the network -Timer A initially T1 Section 17.1.1.2 INVITE request retransmit - interval, for UDP only -Timer B 64*T1 Section 17.1.1.2 INVITE transaction - timeout timer -Timer C > 3min Section 16.6 proxy INVITE transaction - bullet 11 timeout -Timer D > 32s for UDP Section 17.1.1.2 Wait time for response - 0s for TCP/SCTP retransmits -Timer E initially T1 Section 17.1.2.2 non-INVITE request - retransmit interval, - UDP only -Timer F 64*T1 Section 17.1.2.2 non-INVITE transaction - timeout timer -Timer G initially T1 Section 17.2.1 INVITE response - retransmit interval -Timer H 64*T1 Section 17.2.1 Wait time for - ACK receipt -Timer I T4 for UDP Section 17.2.1 Wait time for - 0s for TCP/SCTP ACK retransmits -Timer J 64*T1 for UDP Section 17.2.2 Wait time for - 0s for TCP/SCTP non-INVITE request - retransmits -Timer K T4 for UDP Section 17.1.2.2 Wait time for - 0s for TCP/SCTP response retransmits - - Table 4: Summary of timers - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 265] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Acknowledgments - - We wish to thank the members of the IETF MMUSIC and SIP WGs for their - comments and suggestions. Detailed comments were provided by Ofir - Arkin, Brian Bidulock, Jim Buller, Neil Deason, Dave Devanathan, - Keith Drage, Bill Fenner, Cedric Fluckiger, Yaron Goland, John - Hearty, Bernie Hoeneisen, Jo Hornsby, Phil Hoffer, Christian Huitema, - Hisham Khartabil, Jean Jervis, Gadi Karmi, Peter Kjellerstedt, Anders - Kristensen, Jonathan Lennox, Gethin Liddell, Allison Mankin, William - Marshall, Rohan Mahy, Keith Moore, Vern Paxson, Bob Penfield, Moshe - J. Sambol, Chip Sharp, Igor Slepchin, Eric Tremblay, and Rick - Workman. - - Brian Rosen provided the compiled BNF. - - Jean Mahoney provided technical writing assistance. - - This work is based, inter alia, on [41,42]. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 266] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Authors' Addresses - - Authors addresses are listed alphabetically for the editors, the - writers, and then the original authors of RFC 2543. All listed - authors actively contributed large amounts of text to this document. - - Jonathan Rosenberg - dynamicsoft - 72 Eagle Rock Ave - East Hanover, NJ 07936 - USA - - EMail: jdrosen@dynamicsoft.com - - - Henning Schulzrinne - Dept. of Computer Science - Columbia University - 1214 Amsterdam Avenue - New York, NY 10027 - USA - - EMail: schulzrinne@cs.columbia.edu - - - Gonzalo Camarillo - Ericsson - Advanced Signalling Research Lab. - FIN-02420 Jorvas - Finland - - EMail: Gonzalo.Camarillo@ericsson.com - - - Alan Johnston - WorldCom - 100 South 4th Street - St. Louis, MO 63102 - USA - - EMail: alan.johnston@wcom.com - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 267] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - - Jon Peterson - NeuStar, Inc - 1800 Sutter Street, Suite 570 - Concord, CA 94520 - USA - - EMail: jon.peterson@neustar.com - - - Robert Sparks - dynamicsoft, Inc. - 5100 Tennyson Parkway - Suite 1200 - Plano, Texas 75024 - USA - - EMail: rsparks@dynamicsoft.com - - - Mark Handley - International Computer Science Institute - 1947 Center St, Suite 600 - Berkeley, CA 94704 - USA - - EMail: mjh@icir.org - - - Eve Schooler - AT&T Labs-Research - 75 Willow Road - Menlo Park, CA 94025 - USA - - EMail: schooler@research.att.com - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 268] - -RFC 3261 SIP: Session Initiation Protocol June 2002 - - -Full Copyright Statement - - Copyright (C) The Internet Society (2002). All Rights Reserved. - - This document and translations of it may be copied and furnished to - others, and derivative works that comment on or otherwise explain it - or assist in its implementation may be prepared, copied, published - and distributed, in whole or in part, without restriction of any - kind, provided that the above copyright notice and this paragraph are - included on all such copies and derivative works. However, this - document itself may not be modified in any way, such as by removing - the copyright notice or references to the Internet Society or other - Internet organizations, except as needed for the purpose of - developing Internet standards in which case the procedures for - copyrights defined in the Internet Standards process must be - followed, or as required to translate it into languages other than - English. - - The limited permissions granted above are perpetual and will not be - revoked by the Internet Society or its successors or assigns. - - This document and the information contained herein is provided on an - "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING - TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING - BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION - HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF - MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. - -Acknowledgement - - Funding for the RFC Editor function is currently provided by the - Internet Society. - - - - - - - - - - - - - - - - - - - -Rosenberg, et. al. Standards Track [Page 269] - diff --git a/tests/auto/corelib/io/qtextstream/shift-jis.txt b/tests/auto/corelib/io/qtextstream/shift-jis.txt deleted file mode 100644 index 51f161ab1a..0000000000 --- a/tests/auto/corelib/io/qtextstream/shift-jis.txt +++ /dev/null @@ -1,764 +0,0 @@ -Shift-JISƒeƒLƒXƒg‚𳂵‚­ˆµ‚¤ -Å‹ß‚ÌXV—š—ð -2005-03-26: uʼn‚Év’†AXML“ú–{Œêƒvƒƒtƒ@ƒCƒ‹‘æ2”Å‚ÉŠî‚«AŽáŠ±’Ç‹LB -2005-03-09: uʼn‚Év’†A•¶Í‚ðŽáŠ±C³B -2003-06-24: Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼ -2003-05-31: uʼn‚Év’†AuƒVƒtƒgJISv‚È‚Ç‚Ì•\‹L‚ɂ‚¢‚ÄB -2003-05-24: CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ· -2002-08-30: Perl 5.8.0 ‚ɂ‚¢‚ÄB -2002-01-17: ’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ -2001-12-15: ShiftJIS::Collate ‚ª overrideCJK ƒpƒ‰ƒ[ƒ^‚ð”pŽ~‚µ‚½‚±‚Æ‚É”º‚¤ “ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é‚Ì‘‚«Š·‚¦B -ʼn‚É -‚ ‚肪‚¿‚ȃGƒ‰[ -ƒGƒ‰[‚âŠÔˆá‚¢‚ð–h‚®‘Îô -•¶Žš—ñƒŠƒeƒ‰ƒ‹‚Ìì‚è•û -³‹K•\Œ»‚ƃ}ƒbƒ` -ƒOƒ[ƒoƒ‹ƒ}ƒbƒ` -ƒAƒ‹ƒtƒ@ƒxƒbƒg‚̑啶Žš‚Ƭ•¶Žš -’·‚¢•¶Žš—ñ‚ɑ΂·‚鳋K•\Œ»ŒŸõ -ŠOŽš‚Ì•ÏŠ· -CP932d•¡’è‹`•¶Žš‚Ì•ÏŠ· -•¶Žš”‚𔂦‚é -•¶Žš’PˆÊ‚É•ªŠ„‚·‚é -‚¢‚ë‚¢‚ë‚È•ªŠ„ -“Á’è‚Ì’·‚³‚ÅØ‚è‚»‚낦‚é -“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é -Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼ -ʼn‚É -“ú–{Œê‚Ì•¶ŽšƒR[ƒh‚É‚Í‚¢‚­‚‚©‚Ì‚à‚Ì‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚ ‚é’ö“xˆê”Ê“I‚È‚à‚Ì‚È‚çA‚Ç‚ê‚ðŽg‚Á‚Ä‚à‚æ‚¢‚Å‚µ‚傤i‚Ç‚Ì•¶ŽšƒR[ƒh‚Å•„†‰»‚³‚ê‚Ä‚¢‚é‚©‚Ìî•ñ‚ªŽ¸‚í‚ꂳ‚¦‚µ‚È‚¯‚ê‚ÎjB -—Ⴆ‚ÎA“ú–{Œê”ÅWindows‚Å‚ÍAƒƒ‚’ ‚Å‚àDOS‘‹‚Å‚àShift-JIS‚ªŽg‚í‚ê‚Ä‚¢‚Ü‚·B‚±‚¤‚¢‚¤ê‡Aˆ—‚Ì“r’†‚Å‚í‚´‚í‚´EUC-JP‚âUTF-8‚É•ÏŠ·‚·‚é‚Æ‚µ‚½‚ç–Ê“|‚Å‚·BƒfƒoƒbƒO‚Ì‚Æ‚«Au‚±‚Ì’iŠK‚Å‚Í‚±‚Ì•Ï”‚ɂ͉½‚ª“ü‚Á‚Ä‚¢‚é‚Ì‚©vo—Í‚µ‚Ä“_ŒŸ‚·‚é‚Ì‚Í‚æ‚­s‚í‚ê‚Ü‚·‚ªA‚±‚Ì‚Æ‚«EUC-JP‚Æ‚µ‚ÄŽû‚ß‚ç‚ê‚Ä‚¢‚½‚çAì‹Æ‚ÍŽèŠÔ‚Ç‚é‚Å‚µ‚傤B“ü—Í‚ào—Í‚àShift-JIS‚Ås‚¤‚‚à‚è‚È‚çAˆ—‚Ì‘S‘Ì‚ÅShift-JIS‚̂܂܈µ‚¦‚½‚ç‚«‚Á‚Æ•Ö—˜‚Å‚µ‚傤B -’F "ƒVƒtƒgJIS", "Shift_JIS", "Shift-JIS" ‚È‚Ç‚Ì•\‹L‚̈Ⴂ‚ɂ‚¢‚Ä‚Í‚æ‚­‚í‚©‚Á‚Ä‚¢‚Ü‚¹‚ñB¡‚Ì‚Æ‚±‚땪‚©‚Á‚Ä‚¢‚邱‚Æ‚ÍF -JIS X 0208:1997‚Ì•‘®‘1iƒVƒtƒg•„†‰»•\Œ»j‚É‚ÍAuŽQlv‚Æ‚µ‚Äu‚±‚Ì•„†‰»•\Œ»‚Í’ÊígƒVƒtƒgJISƒR[ƒhh‚ƌĂ΂ê‚Ä‚¢‚év‚Ì‹Lq‚ª‚ ‚è‚Ü‚·B -IANA ‚Ì CHARACTER SETS ‚É‚ÍAShift_JIS ‚Æ Windows-31J ‚Æ‚ª•Ê‚É“o˜^‚³‚ê‚Ä‚¢‚Ü‚·B‚Ü‚½AShift_JIS‚ɂ‚¢‚ÄAuCCSi•„†‰»•¶ŽšW‡j‚ÍJIS X0201:1997‚ÆJIS X0208:1997‚Å‚ ‚èAŠ®‘S‚È’è‹`‚ÍJIS X 0208:1997‚Ì•‘®‘1‚ÉŽ¦‚³‚ê‚Ä‚¢‚éBv‚Æ‹L‚µ‚Ä‚¢‚Ü‚·B -W3C ‚Ì XML Japanese Profile ‚É‚ÍAShift-JIS‚ÉUnicode‚Ö‚Ì•ÏŠ·•\‚ª•¡”‚ ‚éŽ|‚Ì‹LÚ‚ª‚ ‚è‚Ü‚·BXML Japanese Profile (Second Edition)‚Å‚ÍAUnicode Consortium‚ÅŒöŠJ‚³‚ê‚Ä‚¢‚éMicrosoft CP932‚Ì•ÏŠ·•\‚É‚æ‚écharset‚Ì–¼Ì "x-sjis-cp932" ‚ð "Windows-31J" ‚É•ÏX‚µ‚Ä‚¢‚Ü‚·B -MicrosoftŽÐ‚Ì Global Dev ‚Å‚ÍACodepage 932 ‚ð "Japanese Shift-JIS" ‚Æ’‹L‚µ‚Ä‚¢‚Ü‚·B -‚µ‚©‚µAShift-JIS‚É‚Í‚ ‚éŽí‚Ì•È‚ª‚ ‚Á‚ÄA‚¿‚å‚Á‚Æ‚µ‚½‚±‚Æ‚ªƒoƒO‚âƒGƒ‰[‚╶Žš‰»‚¯‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·B‚È‚ñ‚Æ‚©‚È‚ç‚È‚¢‚à‚Ì‚Å‚µ‚傤‚©B -Perl‚ͧŒä•¶Žš‚âƒiƒ‹•¶Žš‚ðŠÜ‚ÞƒoƒCƒiƒŠƒf[ƒ^‚Å‚·‚糂µ‚­ˆ—‚Å‚«‚é‚悤‚ÉÝŒv‚³‚ê‚Ä‚¢‚é‚Ì‚ÅAƒXƒNƒŠƒvƒg‚âƒeƒLƒXƒg‚ðShift-JIS‚Å‘‚¢‚½‚­‚ç‚¢‚Å–â‘è‚ɂȂ邱‚Æ‚Í‚ ‚è‚Ü‚¹‚ñB -‚µ‚©‚µAperl‚ªƒXƒNƒŠƒvƒg‚ð‰ðŽß‚·‚é‚Æ‚«‚Íi’ÊíjƒoƒCƒg’PˆÊ‚Å’²‚ׂé‚Ì‚ÅAShift-JIS‚̂悤‚ȃ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðŠÜ‚Þ•„†‚Í‚»‚Ì‚Ü‚Ü‚Å‚Í’¼Ú—‰ð‚Å‚«‚Ü‚¹‚ñB -‚½‚Æ‚¦‚ÎAShift-JIS‚Å '‚ ' ‚Æ‚¢‚¤•¶Žš‚ÍA16i”‚Å82 A0‚Æ‚¢‚¤‚QƒoƒCƒg‚Å•\‚³‚ê‚Ü‚·B‚±‚ê‚ð "\x82\xA0" ‚Æ‘‚¢‚Ä‚àperl‚É‚Æ‚Á‚Ä‚Í“¯‚¶‚Å‚·B‚±‚ꂪ“ú–{‚Ìicountryj“ú–{Œê‚Ìilanguagej•¶Žš‚Å‚ ‚é‚Æ‚©AShift-JIS‚Å‘‚©‚ê‚Ä‚¢‚éicharsetj‚Æ‚©‚¢‚¤î•ñ‚Í‚Ç‚±‚É‚àŠÜ‚Ü‚ê‚Ä‚¢‚Ü‚¹‚ñB -‚»‚Ì‚½‚ßAShift-JIS‚Å‘‚«‚½‚¢‚Æ‚«‚É‚ÍAperl‚ÌŒë‰ð‚ðŽó‚¯‚È‚¢‚悤‚É‘‚¢‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚»‚Ì”z—¶‚ÍAƒvƒƒOƒ‰ƒ}‚ª‚µ‚Ä‚â‚ç‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB‚±‚Ì•¶‘‚Ì‹Lq‚ÍA‚»‚̂悤‚ÈŽèŠÔ‚ð‚©‚¯‚Ä‚àAShift-JIS‚ð—p‚¢‚邱‚ƂɈӋ`‚ª‚ ‚é‚Æl‚¦‚Ä‚¢‚él‚É‚ÍŽQl‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB -‚»‚ñ‚ÈŽèŠÔ‚ðŠ|‚¯‚½‚­‚È‚¢l‚ÍA -Perl 5.8.xˆÈ~‚ðŽg‚¤B -—˜“_Fperl5-porters@perl.org ‚ŃTƒ|[ƒg‚³‚ê‚Ä‚¢‚éB -Œ‡“_F“Æ“Á‚Ìl‚¦•û‚ª‚ ‚èA]—ˆ‚Ì“ú–{Œêˆ—‚Æ‚Í‘Š—e‚ê‚È‚¢‚Æ‚±‚낪‚ ‚éi‚à‚Á‚Æ‚àA‚»‚Ì‚¤‚¿Šµ‚ê‚Ä‹C‚É‚È‚ç‚È‚­‚È‚é‚©‚à‚µ‚ê‚È‚¢jB -jperl‚ðŽg‚¤B -—˜“_FShift-JIS ‚𕶎š‚Æ‚µ‚Ä’¼Úˆµ‚¤‚±‚Æ‚ª‚Å‚«‚éB -Œ‡“_FŒ»ÝAˆÛŽ‚·‚él‚ª‚¢‚È‚¢B -•¶ŽšƒR[ƒh‚ðUTF-8‚©EUC-JP‚É•ÏŠ·‚µ‚Ä‚©‚爗‚·‚éB -—˜“_FPerl 5.8.xˆÈ~‚Å‚È‚­‚Ä‚à“®ì‚·‚é•ÏŠ·—p‚̃‚ƒWƒ…[ƒ‹(.pm)‚⃉ƒCƒuƒ‰ƒŠ(.pl)‚ª‚¢‚ë‚¢‚ë“üŽè‰Â”\B -Œ‡“_FShift-JIS‚قLj«‚­‚È‚¢‚É‚µ‚Ä‚àAƒ}ƒ‹ƒ`ƒoƒCƒg•¶Žš‚ðƒVƒ“ƒOƒ‹ƒoƒCƒg•¶Žš‚Æ‹æ•Ê‚¹‚¸A‚Æ‚à‚ɈꕶŽš‚Æ‚µ‚Ĉ—‚·‚é‚Ì‚Í–Ê“|‚Å‚ ‚éB - ‚Æ‚¢‚¤‘Έ‚ð‚Æ‚Á‚½‚Ù‚¤‚ª‚æ‚¢‚Å‚µ‚傤B‚±‚ê‚ç‚̃vƒƒOƒ‰ƒ€‚Í—L–¼‚È‚Ì‚ÅA’T‚¹‚΂·‚®Œ©‚‚©‚é‚Å‚µ‚傤‚©‚çA“üŽèæ‚Í‚±‚±‚É‚ÍŽ¦‚µ‚Ü‚¹‚ñB -‚È‚¨A‚±‚Ì•¶‘‚É‘‚©‚ê‚Ä‚¢‚鎖‚ªAÅ‚àŠ©‚ß‚ç‚ê‚È‚¢•û–@‚È‚Ì‚ÅA‚±‚±‚©‚çæ‚ÍA‚»‚̂‚à‚è‚Å‚¨“ǂ݉º‚³‚¢B‚±‚Ì•û–@‚ɂ‚¢‚ĉ½‚©‹^–₪¶‚¶‚½‚Æ‚µ‚Ä‚àA‚»‚ê‚ɂ‚¢‚Ä‘¼‚Ì‚Æ‚±‚ë‚ÅŽ¿–â‚·‚é‚ÆA‰½‚Å‚»‚ñ‚È‚â‚è•û‚ð‚µ‚Ä‚¢‚é‚Ì‚©‚ÆA‚«‚Á‚Æ”ñ“‚ê‚é‚Å‚µ‚傤B‚©‚Æ‚¢‚Á‚ÄAŽ„‚É‚àu‚©‚È‚¢‚ʼnº‚³‚¢B -Shift-JIS‚ðŽg‚Á‚½‚Æ‚«‚É‚ ‚肪‚¿‚ÈiHjƒGƒ‰[ -Shift-JIS‚É‚ÍA‘æ‚QƒoƒCƒg‚ª [@-~]iASCII 10i”‚Å64-126j‚͈̔͂ɓü‚é‚à‚Ì‚ª‚ ‚è‚Ü‚·B‚±‚ê‚ç‚ÌASCII•¶Žš‚ÍAperl‚É‚Æ‚Á‚Ä“Á•Ê‚ȈӖ¡‚ð‚à‚‚±‚Æ‚ª‚ ‚邽‚ßA‚µ‚΂µ‚΃Gƒ‰[‚ÌŒ´ˆö‚Æ‚È‚è‚Ü‚·BShift-JIS‚Å‚ÍA‚QƒoƒCƒg•¶Žš‚Ì‘æ‚QƒoƒCƒg‚ÍA[\x40-\x7E\x80-\xFC])‚͈̔͂ɂ ‚邽‚ßAŽÀ‚É188•ª‚Ì63A–ñ‚R•ª‚Ì‚P‚Ì•¶Žš‚ª‰½‚ç‚©‚Ì–â‘è‚ð‹N‚±‚µ“¾‚é‚Æ‚¢‚¦‚Ü‚·B -ŽŸ‚ÉAShift-JIS‚ðŽg‚Á‚½‚Æ‚«‚É‹N‚±‚肪‚¿‚ȃGƒ‰[‚Æ‚»‚ÌŒ´ˆö‚ðŽ¦‚µ‚Ü‚·BƒGƒ‰[ƒƒbƒZ[ƒW‚Íperl‚̈Ⴂiƒo[ƒWƒ‡ƒ“‚â‚ǂ̃vƒ‰ƒbƒgƒtƒH[ƒ€—p‚Ì‚à‚Ì‚Å‚ ‚é‚©“™j‚É‚æ‚葽­‚̈Ⴂ‚ª‚ ‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñB -ƒGƒ‰[‚É‚È‚ç‚È‚­‚Ä‚àA•¶Žš‰»‚¯‚µ‚½‚èAŠú‘Ò‚µ‚½‚悤‚È“®ì‚ð‚µ‚È‚©‚Á‚½‚è‚ÅA‚¤‚Ü‚­‚¢‚©‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B‚±‚Ìê‡AƒGƒ‰[‚ªo‚È‚¢•ªAŒ´ˆö‚ðŽ©•ª‚Å’T‚³‚È‚¯‚ê‚΂Ȃç‚È‚­‚Ȃ邽‚߃oƒOŽæ‚è‚Í‚µ‚΂µ‚΢“ï‚Å‚·B -‚±‚±‚ł̓Gƒ‰[‚ɑ΂·‚é‘Îô‚Í’ñŽ¦‚µ‚Ü‚¹‚ñB‘Îô‚Í‚ ‚Æ‚Å‚Ü‚Æ‚ß‚Ä‘‚«‚Ü‚·B -‚È‚¨A‚±‚±‚É‚Í•¶ŽšƒR[ƒh‚ðEUC-JP‚É‚µ‚Ä‚à‹N‚±‚é‚悤‚È–â‘è‚âƒGƒ‰[‚ÍŽ¦‚µ‚Ü‚¹‚ñBŠî–{“I‚ÉAEUC-JP‚È‚ç‹N‚«‚È‚¢‚ªAShift-JIS‚Ì‚Æ‚«‚É‚Í‹N‚±‚é‚悤‚ÈŽ–•¿‚ÉŒÀ‚è‚Ü‚·B -ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Pj -—Ⴆ‚ÎA"•\Ž¦" ‚Æ‚© "–\—Í" ‚Æ‚©‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚ç‚Í "•Ž¦" ‚Æ‚© "–—Í" ‚É‚È‚è‚Ü‚·B‚±‚ê‚ÍA"•\" ‚â "–\"‚Ì•¶Žš‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚ßAƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì•¶Žš‚̃GƒXƒP[ƒv‚ð‚·‚é‚±‚Æ‚É‚È‚é‚Ì‚ÅA•\Ž¦ 0x955C8EA6 ‚Å‚ ‚Á‚Ä‚àAƒNƒI[ƒg‚ÌŒ‹‰Ê‚Í "•\Ž¦" 0x958EA6 ‚Æ‚È‚é‚©‚ç‚Å‚·B'•\Ž¦' ‚Æ‚·‚ê‚Ε¶Žš‰»‚¯‚Í‹N‚±‚è‚Ü‚¹‚ñ‚ªAƒVƒ“ƒOƒ‹ƒNƒI[ƒg‚Å‚à–h‚°‚È‚¢•¶Žš‰»‚¯‚âƒGƒ‰[‚ª‚ ‚è‚Ü‚·iŽŸ—ájB -ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Qj -—Ⴆ‚ÎA"ƒ~ƒ\\500" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚Å‚ÍA\ ‚ª’E—Ž‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚ê‚ÍA'ƒ~ƒ\\500' ‚â q(ƒ~ƒ\\500) ‚È‚Ç‚Æ‚µ‚Ä‚à–h‚®‚±‚Æ‚ª‚Å‚«‚Ü‚¹‚ñB‚»‚ê‚Í \\ ‚Æ‚¢‚¤˜A‘±‚ª‚ ‚é‚Æ \ ‚PŒÂ‚É‚È‚Á‚Ä‚µ‚Ü‚¤‚Æ‚¢‚¤‹K‘¥‚ª‚ ‚é‚©‚ç‚Å‚·B -ƒNƒI[ƒg‚âƒNƒI[ƒg•—‰‰ŽZŽq‚Ì’†‚Å‚ÍA•¶Žš—ñ‚ɃNƒI[ƒg‚Æ“¯‚¶•¶Žš‚ðŠÜ‚ß‚ç‚ê‚é‚悤‚ÉA\ ‚É‚æ‚éƒGƒXƒP[ƒv‚ð•t‚¯‚ê‚΃NƒI[ƒg‚ÌI’[•¶Žš‚Å‚Í‚È‚­A•¶Žš—ñ‚̈ꕔ‚Æ‚Ý‚È‚µ‚Ü‚·B‚»‚Ì‚½‚ßA\\ ‚ª \ ‚Ì•¶Žš‚ð•\‚·ƒGƒXƒP[ƒv‚É‚È‚è‚Ü‚·B‚±‚ê‚̓NƒI[ƒg‚ÌŽn’[EI’[•¶Žš‚ð‰½‚É‚µ‚Ä‚à“¯‚¶‚±‚Æ‚Å‚·B -ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Rj -—Ⴆ‚ÎA"ŠÛ\net" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚Í "ŠÛ¥ -et" ‚̂悤‚É“r’†‚ʼnüs‚³‚ê‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚ê‚ÍA"\" ‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚ßAƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì 'n' ‚Ƈ‚킹‚Ä\n‚Ì‚·‚È‚í‚¿‰üs•¶Žš‚ð•\‚·ƒƒ^•¶Žš‚Æ‚µ‚ĉðŽß‚³‚ê‚é‚©‚ç‚Å‚·B -ƒGƒ‰[‚É‚Í‚È‚ç‚È‚¢‚¯‚Ç•¶Žš‰»‚¯‚·‚éi‚Sj -—Ⴆ‚ÎA"ˆø”@ARGV" ‚Æ‚¢‚¤ƒŠƒeƒ‰ƒ‹‚ª•¶Žš‰»‚¯‚ð‹N‚±‚µ‚Ü‚·B‚±‚ê‚ÍA"@"i‘SŠpƒXƒy[ƒXj‚Ì‘æ‚QƒoƒCƒg‚ª @ ‚Å‚ ‚邽‚ßAƒ_ƒuƒ‹ƒNƒI[ƒg•¶Žš‚Ì’†‚Å‚ÍŽŸ‚Ì ARGV ‚Ƈ‚킹‚Ä "@ARGV" ‚Æ‚¢‚¤”z—ñ‚Æ‚µ‚Ä•Ï”“WŠJ‚ðs‚¤‚©‚ç‚Å‚·B@ARGV‚̂悤‚É•K‚¸’è‹`‚³‚ê‚é‚悤‚È”z—ñ‚È‚çA“WŠJ‚³‚ê‚Ü‚·‚ªA•Ê‚Ìꇂł̓Gƒ‰[‚É‚È‚é‚©‚à‚µ‚ê‚Ü‚¹‚ñi‚»‚ê‚ÍŽŸ€‚ðŽQÆjB -In string, @dog now must be written as \@dog (Perl 5.6.0‚Ü‚Å) -u•¶Žš—ñ‚Ì’†‚Å‚ÍA@dog‚Í¡‚Í\@dog‚Æ‘‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢v -‘O—á‚Å‚Ý‚½‚悤‚ÉA‘SŠpƒXƒy[ƒX "@"‚Ì‘æ‚QƒoƒCƒg‚Í @ ‚Å‚ ‚邽‚ßAŒã‚ë‚Ì•¶Žš‚Ƈ‚킹‚Ä”z—ñ‚Å‚ ‚é‚©‚̂悤‚ɉðŽß‚µ‚悤‚Æ‚µ‚Ü‚·B"Œ¢@dog" ‚̂悤‚Èê‡A@dog ‚Æ‚¢‚¤”z—ñ‚ª’è‹`‚³‚ê‚Ä‚¢‚ê‚΂»‚ê‚ð—p‚¢‚Ä•Ï”“WŠJ‚µ‚Ü‚·‚ªA’è‹`‚³‚ê‚Ä‚¢‚È‚¢ê‡AƒGƒ‰[ƒƒbƒZ[ƒW‚ðo‚µ‚Ü‚·B -``now must be written as''u¡‚Í‚±‚¤‘‚©‚È‚¯‚ê‚΂Ȃç‚È‚¢v‚Æ‚ÍAPerl4‚Ü‚Å‚Í”z—ñ‚Ì•Ï”“WŠJ‚Ís‚í‚È‚©‚Á‚½‚½‚ßA"hoge@foo.bar" ‚̂悤‚È‘‚«•û‚ð‚·‚é‚±‚Æ‚ª‚Å‚«‚½‚Ì‚¾‚ªA¡ Perl‚Å‚Í @foo ‚ª“WŠJ‚³‚ê‚Ä‚µ‚Ü‚¤‚Ì‚ÅA’ˆÓ‚ðŠ«‹N‚·‚邽‚߃Gƒ‰[‚ðo‚·‚悤‚É‚µ‚Ä‚¢‚é‚悤‚Å‚·i‚à‚µPerl‚ªÌ‚©‚ç”z—ñ‚Ì“WŠJ‚ðƒTƒ|[ƒg‚µ‚Ä‚¢‚½‚çAƒGƒ‰[‚ðo‚·‚±‚Æ‚È‚­A–Ù‚Á‚Ä“WŠJ‚·‚邾‚¯‚¾‚Á‚½‚©‚à‚µ‚ê‚Ü‚¹‚ñBŽŸ€‚àŽQÆjB -"Œ¢@\dog" ‚Æ‚·‚ê‚΂¢‚¢‚Æ‚¢‚¤ˆÓŒ©‚à‚ ‚è‚Ü‚·‚ªA\d ‚ªƒƒ^•¶Žš‚Æ‚µ‚Ä“Á•ÊˆÓ–¡‚ª‚È‚¢‚½‚ß‚É‚¤‚Ü‚­‚¢‚­‚Ì‚Å‚ ‚Á‚ÄiPerl 5.6ˆÈ~‚Å‚ÍAŒx Unrecognized escape \d passed through u”FŽ¯‚Å‚«‚È‚¢ƒGƒXƒP[ƒv \d ‚ª“n‚³‚ꂽv‚ðˆø‚«‹N‚±‚µ‚Ü‚·jA—Ⴆ‚Î "‰Ô@\flower" ‚Ì‚Æ‚«‚ÍA\f ‚ª‰üƒy[ƒW•¶Žš‚Æ‚µ‚ĉðŽß‚³‚êA•¶Žš‰»‚¯‚µ‚Ü‚·B -Possible unintended interpolation of @dog in string (Perl 5.6.1ˆÈ~) -•¶Žš—ñ‚Ì’†‚ÅA@dog‚ª—\Šú‚¹‚¸‚É“WŠJ‚³‚ê‚é -‘O€‚Æ“¯‚¶‚­A"Œ¢@dog" ‚Å‚·‚ªAPerl 5.6.1iActivePerl 626jˆÈ~‚Å‚ÍA’è‹`‚³‚ê‚Ä‚¢‚È‚¢”z—ñ‚Å‚à–Ù‚Á‚Ä“WŠJ‚µ‚Ü‚·B”z—ñ @dog ‚ª“WŠJ‚³‚ê‚é‚Ì‚ÅA"Œ¢\x81" ‚Æ“¯‚¶‚É‚È‚è‚Ü‚·B -‚±‚ê‚̓Gƒ‰[‚Å‚Í‚È‚­AŒx‚É‚È‚è‚Ü‚·B -Can't find string terminator '"' anywhere before EOF -uI’[•¶Žš '"'‚ªƒtƒ@ƒCƒ‹‚ÌI‚è EOF ‚Ü‚Å‚ÉŒ©‚‚©‚ç‚È‚©‚Á‚½v -—Ⴆ‚ÎA"‘Ήž•\" ‚̂悤‚ȃŠƒeƒ‰ƒ‹‚Å‚ÍA'•\' ‚Ì‘æ‚QƒoƒCƒg‚ª \ ‚Å‚ ‚邽‚ßA‚¤‚µ‚ë‚Ì " ‚ðƒGƒXƒP[ƒv‚µ‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚Ì‚½‚ßperl‚ÍA‚»‚Ì " ‚̓NƒI[ƒg•¶Žš—ñ‚ÌI’[•¶Žš‚Æ‚Í‚Ý‚È‚³‚¸‚ÉA•¶Žš—ñ‚ª‚³‚ç‚É‘±‚­‚Æl‚¦‚Ä‚µ‚Ü‚¢‚Ü‚·B‚±‚êˆÈ~AƒXƒNƒŠƒvƒg‚Ì’†‚É " ‚Ì•¶Žš‚ª‘S‚­ŠÜ‚Ü‚ê‚È‚¯‚ê‚ÎA‚±‚̂悤‚ɃGƒ‰[•ñ‚ð‚µ‚Ü‚·B -qq{ "“ú–{Œê" }‚̂悤‚Èê‡‚É‚à’ˆÓ‚µ‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB"–{" ‚Ì‘æ“ñƒoƒCƒg‚Í { ‚È‚Ì‚ÅA‚±‚Ì‚Ü‚Ü‚Å‚Í { }‚̃lƒXƒg‚ª‚¸‚ê‚Ä‚µ‚Ü‚¢A“¯—l‚̃Gƒ‰[‚ª”­¶‚µ‚Ü‚·B -Bareword found where operator expected -u—‡‚̌ꂪ‰‰ŽZŽq‚ª‚ ‚Á‚Ä‚Ù‚µ‚¢ˆÊ’u‚ÉŒ©‚‚©‚Á‚½v -—Ⴆ‚ÎAprint "\"‘Ήž•\\""; ‚̂悤‚Èê‡A\" ‚É‚æ‚éˆø—p•„‚̃GƒXƒP[ƒv‚ÍA•\ ‚Ì‘æ‚QƒoƒCƒg‚Ì\‚Ì‚½‚ßA\\ " ‚Æ‚¢‚¤‘g‚݇‚킹‚É‚È‚èAƒGƒXƒP[ƒv‚ª‘Å‚¿Á‚³‚ê‚Ä‚¢‚Ü‚·B‚»‚Ì‚½‚ßA‚±‚̃Šƒeƒ‰ƒ‹‚ÍAperl‚©‚猩‚é‚ÆA"\"‘Ήž•\\" Unicode -> CP932 ‚̇‚Å•ÏŠ·‚³‚ê‚é‚ÆAd•¡’è‹`•¶Žš‚ÍA‚Ç‚ê‚©ˆê‚‚ɑµ‚¦‚ç‚ê‚Ü‚·B‚±‚Ì—Dæ‡ˆÊ‚Í JIS X 0208, NEC“ÁŽê•¶Žš (13‹æ)AIBMŠg’£•¶Žš (115`119‹æ)ANEC‘I’èIBMŠg’£•¶Žš (89`92‹æ) ‚̇‚Å‚·Bˆê—á‚Æ‚µ‚ÄA'æ' ‚Ìê‡ANEC“ÁŽê•¶Žš‚Ì "\x87\x9A" ‚â IBMŠg’£•¶Žš‚Ì "\xFA\x5B" ‚ÍAJIS X 0208 ‚Ì "\x81\xE6" ‚É‚È‚è‚Ü‚·B -‚µ‚©‚µACP-932 ‚̃eƒLƒXƒg’†Ad•¡’è‹`•¶Žš‚ª‚Ç‚ê‚©‚É‘µ‚Á‚Ä‚¢‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B—Ⴆ‚Î "\x87\x9A" ‚â "\xFA\x5B" ‚ªŠÜ‚Ü‚ê‚Ä‚¢‚é‚ÆAƒeƒLƒXƒg‚ð–Ú‚ÅŒ©‚é‚ƈႢ‚ª‚È‚¢‚Ì‚ÉA"\x81\xE6" ‚ÅŒŸõ‚µ‚Ä‚àŒ©‚‚¯‚ç‚ê‚È‚¢‚±‚Æ‚É‚È‚è‚Ü‚·B -d•¡’è‹`•¶Žš‚𑵂¦‚郂ƒWƒ…[ƒ‹‚Æ‚µ‚ÄAShiftJIS/CP932/Correct.pm ‚ª‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B -‚Ü‚½AShiftJIS/String.pm ‚Ì strtr() ‚Ü‚½‚Í trclosure() ‚ðŽg‚¤•û–@‚à‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B -ƒTƒ“ƒvƒ‹ƒR[ƒh - -# (1) $necJIS -> $jisNEC (9‘Î) - $necJIS = "\x87\x90\x87\x91\x87\x92\x87\x95\x87\x96\x87\x97\x87\x9A\x87\x9B\x87\x9C"; - # NEC“ÁŽê•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš - $jisNEC = "\x81\xE0\x81\xDF\x81\xE7\x81\xE3\x81\xDB\x81\xDA\x81\xE6\x81\xBF\x81\xBE"; - # JIS•¶Žš‚Ì‚¤‚¿ANEC“ÁŽê•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš - -# (2) $necibmJIS -> $jisNECIBM (1‘Î) - $necibmJIS = "\xEE\xF9"; - # NEC‘I’èIBMŠg’£•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš - $jisNECIBM = "\x81\xCA"; - # JIS•¶Žš‚Ì‚¤‚¿ANEC‘I’èIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš - -# (3) $ibmJIS -> $jisIBM (2‘Î) - $ibmJIS = "\xFA\x54\xFA\x5B"; - # IBMŠg’£•¶Žš‚Ì‚¤‚¿AJIS•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš - $jisIBM = "\x81\xCA\x81\xE6"; - # JIS•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš - -# (4) $ibmNEC -> $necIBM (13‘Î) - $ibmNEC = "\xFA\x4A-\xFA\x53\xFA\x58\xFA\x59\xFA\x5A"; - # IBMŠg’£•¶Žš‚Ì‚¤‚¿ANEC“ÁŽê•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš - $necIBM = "\x87\x54-\x87\x5D\x87\x8A\x87\x82\x87\x84"; - # NEC“ÁŽê•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš - -# (5) $necibmIBM -> $ibmNECIBM (13‘Î) - $necibmIBM = "\xEE\xEF-\xEE\xF8\xEE\xFA\xEE\xFB\xEE\xFC"; - # NEC‘I’èIBMŠg’£•¶Žš‚Ì‚¤‚¿AIBMŠg’£•¶Žš‚É•ÏŠ·‚³‚ê‚é‚ׂ«”ñŠ¿Žš - $ibmNECIBM = "\xFA\x40-\xFA\x49\xFA\x55\xFA\x56\xFA\x57"; - # IBMŠg’£•¶Žš‚Ì‚¤‚¿ANEC‘I’èIBMŠg’£•¶Žš‚Éd•¡’è‹`‚³‚ê‚Ä‚¢‚é”ñŠ¿Žš - -# (6) $necibmCJK -> $ibmCJK (360‘Î) - $necibmCJK = "\xED\x40-\xEE\xEC"; - # NEC‘I’èIBMŠg’£•¶Žš’†‚ÌŠ¿Žš - $ibmCJK = "\xFA\x5C-\xFC\x4B"; - # IBMŠg’£•¶Žš’†‚ÌŠ¿Žš - -use ShiftJIS::String qw(trclosure); - -# •ÏŠ·—pƒNƒ[ƒWƒƒ‚̶¬ -$correctCP932 = trclosure( - $necJIS.$necibmJIS.$ibmJIS.$ibmNEC.$necibmIBM.$necibmCJK, # from - $jisNEC.$jisNECIBM.$jisIBM.$necIBM.$ibmNECIBM.$ibmCJK # to -); - -$result = $correctCP932->($source); # $source ‚ð•ÏŠ·‚µ‚Ä $result ‚𓾂é - -•¶Žš”‚𔂦‚é -Shift-JIS•¶Žš—ñ‚Ì•¶Žš”‚𔂦‚é‚É‚ÍAƒ}ƒbƒ`‰‰ŽZŽq‚ð—˜—p‚·‚é‚È‚çƒXƒJƒ‰[ƒRƒ“ƒeƒLƒXƒg‚Å”‚¦‚½•û‚ªŽáŠ±‘¬‚©‚Á‚½‚Å‚·B‚»‚ê‚æ‚èA’uŠ·‰‰ŽZŽq‚ð—˜—p‚µ‚½‚Ù‚¤‚ª‘¬‚­‘‚¯‚é‚Æ‚í‚©‚è‚Ü‚µ‚½B -‚à‚Á‚Æ‚àXS‚Å‘‚¢‚½‚Ù‚¤‚ª‚¸‚Á‚Æ‘¬‚©‚Á‚½‚Å‚·B‚Ü‚ AXSUB‚Í–³—‚É—˜—p‚µ‚È‚­‚Ä‚à‚æ‚¢‚Å‚µ‚傤B -ƒTƒ“ƒvƒ‹ƒR[ƒh -use Benchmark; - -$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; -$s = "Š¿Žš‚ \0A±CƒeƒXƒg -"; - -timethese (100000, { - le => q{ - ($str = $s) =~ s/$char/0/go; - $le = length $str; - }, - sg => q{ - $sg = ($str = $s) =~ s/$char//go; - }, - ab => q{ - $ab = 0; - $ab++ while $s =~ /[^\x81-\x9F\xE0-\xFC]|../g; - }, - ar => q{ - $ar = @{[ $s =~ /$char/go ]}; - }, - gr => q{ - $gr = grep defined, $s =~ /$char/go; - }, - wh => q{ - $wh = 0; - $wh++ while $s =~ /$char/go; - }, - sj => q{ - $sj = sjslen($s); - }, - xs => q{ - $xs = sjlength($s); - }, -}); - -sub sjslen { - my($str,$len,$i,$c,$blen); - $str = shift; - $blen = length $str; - while ($i < $blen) { - $c = vec($str, $i, 8); - if (0x81 <= $c && $c <= 0x9F || 0xE0 <= $c && $c <= 0xFC){ $i++ } - $i++,$len++; - } - $len; -} - -Œ‹‰Ê -Benchmark: timing 100000 iterations of ab, ar, gr, le, sg, sj, wh, xs... - ab: 4 wallclock secs ( 3.46 usr + 0.00 sys = 3.46 CPU) @ 28901.73/s - ar: 6 wallclock secs ( 5.98 usr + 0.00 sys = 5.98 CPU) @ 16722.41/s - gr: 6 wallclock secs ( 5.50 usr + 0.00 sys = 5.50 CPU) @ 18181.82/s - le: 3 wallclock secs ( 2.09 usr + 0.00 sys = 2.09 CPU) @ 47846.89/s - sg: 2 wallclock secs ( 1.92 usr + 0.00 sys = 1.92 CPU) @ 52083.33/s - sj: 9 wallclock secs ( 8.57 usr + 0.00 sys = 8.57 CPU) @ 11668.61/s - wh: 5 wallclock secs ( 4.78 usr + 0.00 sys = 4.78 CPU) @ 20920.50/s - xs: 1 wallclock secs ( 0.38 usr + 0.00 sys = 0.38 CPU) @ 263157.89/s - (warning: too few iterations for a reliable count) - -XSUB -int -sjlength(arg) - SV* arg - PROTOTYPE: $ - PREINIT: - unsigned char *str, *p, *e; - STRLEN byte, len = 0; - CODE: - p = str = (unsigned char *)SvPV(arg, byte); - e = str + byte; - while (p < e) { - if (0x81 <= *p && *p <= 0x9F || 0xE0 <= *p && *p <= 0xFC) - ++p; - ++p, ++len; - } - RETVAL = len; - OUTPUT: - RETVAL - -•¶Žš’PˆÊ‚É•ª‚¯‚é -Shift-JIS•¶Žš—ñ‚𕶎š’PˆÊ‚É•ªŠ„‚µ‚Ü‚µ‚傤B‚±‚ÌꇂÍAXS‚ð—˜—p‚µ‚Ä‚à‚ ‚܂葬‚­‚È‚è‚Ü‚¹‚ñ‚Å‚µ‚½B•Ô‚è’l‚̃ŠƒXƒg‚ð—pˆÓ‚·‚é‚Ì‚ÉŽžŠÔ‚ªŽæ‚ç‚ê‚é‚Ì‚©A‚â‚Í‚èPerl‚̳‹K•\Œ»‚̈—‚Í‚©‚Ȃ葬‚¢‚à‚Ì‚¾‚Æ‚¢‚¤‚±‚Æ‚Å‚µ‚傤B -ƒTƒ“ƒvƒ‹ƒR[ƒh -use Benchmark; - -$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; -$s = "“ú–{ŒêÆÎݺÞ\0ABC" x 100; - -timethese (1000, { - re => q{ - @re = $s =~ /$char/go; - }, - xs => q{ - @xs = sjsplit($s); - }, -}); - -Œ‹‰Ê -Benchmark: timing 1000 iterations of re, xs... - re: 7 wallclock secs ( 6.65 usr + 0.00 sys = 6.65 CPU) @ 150.38/s - xs: 6 wallclock secs ( 5.33 usr + 0.00 sys = 5.33 CPU) @ 187.62/s - -XSUB -void -sjsplit(arg) - SV* arg - PROTOTYPE: $ - PREINIT: - unsigned char *str, *p, *e; - STRLEN ch, byte, len = 0; - PPCODE: - str = (unsigned char *)SvPV(arg,byte); - e = str + byte; - for (p = str; p < e; p++) { - if (0x81 <= *p && *p <= 0x9F || 0xE0 <= *p && *p <= 0xFC) ++p; - ++len; - } - EXTEND(SP,len); - for (p = str; p < e; p += ch) { - ch = (0x81 <= *p && *p <= 0x9F || 0xE0 < *p && *p <= 0xFC) ? 2 : 1; - PUSHs(sv_2mortal(newSVpv(p,ch))); - } - -FX‚È•ªŠ„ -•¶Žš‚Å•ªŠ„‚Å‚Ý‚½‚悤‚ÉA•¶Žš—ñ‚𕪊„‚·‚é‚É‚ÍAm//g‚ª•Ö—˜‚Å‚·B -ƒTƒ“ƒvƒ‹ƒR[ƒh -$onebyte = '[\x00-\x7F\xA1-\xDF]'; -$twobyte = '(?:[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; -$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; - -#‚PƒoƒCƒg•¶Žš‚̉ò‚Æ‚QƒoƒCƒg•¶Žš‚̉ò‚É•ª‚¯‚éB - while ($str =~ /\G($onebyte*)($twobyte*)/g) { - push @one, $1 if $1 ne ''; - push @two, $2 if $2 ne ''; - } - -#‹å“_‚ªÅŒã‚Ì•¶Žš‚Æ‚È‚é‚悤‚É•ªŠ„‚·‚éB -# 'B' ‚Å‚Í‚¢‚¢‚ªA•¶Žš‚É‚æ‚Á‚Ä‚Í’ˆÓ‚ª•K—vB - @sentences = $str =~ /\G$char*?(?:B|D|$)/g; - -“Á’è‚Ì’·‚³‚ÅØ‚è‚»‚낦‚é -’·‚¢•¶Žš—ñ‚ð“Á’è‚Ì’·‚³iƒoƒCƒg’·j‚ÅØ‚è‚»‚낦‚é‚È‚çAŽŸ‚̂悤‚É‚µ‚Ä‚Å‚«‚Ü‚·B -ƒTƒ“ƒvƒ‹ƒR[ƒh -$char = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; - -$str = '‚í‚´‚í‚´EUC-JP‚É•ÏŠ·‚µ‚È‚¢‚ÅAShift-JIS‚̂܂܈—'. - '‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ÇA‚È‚©‚È‚©–Ê“|‚¾‚Ë‚¦B'; - -print join "\n", bytebreak($str,15); - -sub bytebreak{ - my($byte,$bmax,$ch,@lines); - my $str = shift; - $byte = $bmax = shift; - foreach $ch ($str =~ /$char/go) { - $byte += length $ch; # ŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½’·‚³ - if ($byte <= $bmax) { - $lines[-1] .= $ch; # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚· - } else { - $byte = length $ch; - push @lines, $ch; # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚Ìs‚Ö - } - } - return @lines; - # ’·‚³‚ª‘«‚ç‚È‚¢ê‡‚ÉA‰E‚ðƒXƒy[ƒX‚Å–„‚ß‚½‚¯‚ê‚ÎB - # return map {$_ .= ' ' x ($bmax - length)} @lines; -} - -‹Ö‘¥ˆ—‚ÍA—Ⴆ‚ÎŽŸ‚̂悤‚É‚µ‚Äs‚¢‚Ü‚·B’Pƒ‚Èl‚¦•û‚Å‚ÍA‹Ö‘¥ˆ—‚ÍA(i) s“ª‹Ö‘¥•¶Žš‚Ì’¼‘O‚ʼnüs‚µ‚È‚¢G(ii) s––‹Ö‘¥•¶Žš‚Ì’¼Œã‚ʼnüs‚µ‚È‚¢G‚Æ‚¢‚¤‚±‚Æ‚É‚È‚è‚Ü‚·B‚Ü‚½A"(a)"‚̂悤‚ÉAs––‹Ö‘¥•¶Žš‚Æs“ª‹Ö‘¥•¶Žš‚ÌŠÔ‚É‚P•¶Žš‚µ‚©‚È‚¢˜A‘±‚µ‚½•”•ª‚ÍA‚»‚Ì•”•ª‚Ì‘S‘Ì‚ª–³‰üs‚É‚È‚é“_‚É‚à”z—¶‚µ‚Ü‚·B -‚±‚Ì—á‚Å‚Í•¶Žš—ñ‚Ì’·‚³‚ðƒoƒCƒg’· length ‚Å‹K’肵‚Ä‚¢‚Ü‚·‚ªA•¶Žš•‚ƃoƒCƒg”‚Í•K‚¸‚µ‚à”ä—Ⴕ‚Ü‚¹‚ñ‚Ì‚ÅAꇂɂæ‚Á‚Ä‚ÍiƒMƒŠƒVƒA•¶Žš‚Í”¼Šp•‚É‚µ‚½‚¢‚Æ‚©A‚Ü‚½‚̓vƒƒ|[ƒVƒ‡ƒiƒ‹‚ÌꇂƂ©AUTF-8‚ÌꇂƂ©j•¶Žš•‚ð•Ô‚· width ‚̂悤‚ÈŠÖ”‚ð’è‹`‚·‚é•K—v‚ª‚ ‚é‚Å‚µ‚傤B -‚Ü‚½A‚±‚Ì—á‚Ì‚â‚è•û‚Å‚ÍA‹Ö‘¥‚É‚æ‚é–³‰üs•”•ª‚¾‚¯‚ňês‚æ‚è’·‚­‚È‚éꇂÍA‚Í‚Ý‚¾‚µ‚ð–h‚°‚Ü‚¹‚ñB‚»‚ꂪ¢‚é‚È‚çA‹Ö‘¥‚Ì—áŠO‚Æ‚µ‚Äs‚𕪂¯‚éi—Ⴆ‚Î$next‚Ì’·‚³‚ª$bmax‚ð’´‚¦‚È‚¢‚悤‚É‚·‚éjˆ’u‚ª•K—v‚Å‚µ‚傤B -ƒTƒ“ƒvƒ‹ƒR[ƒh -$CharRE = '(?:[\x00-\x7F\xA1-\xDF]|[\x81-\x9F\xE0-\xFC][\x40-\x7E\x80-\xFC])'; - -# s“ª‹Ö‘¥•¶Žšiˆê•”•ªj -$NotAtBegin = q/)]}fhvxjnp!,.:;?ABXJKICDFGH/; -# s––‹Ö‘¥•¶Žšiˆê•”•ªj -$NotAtEnd = q/([{eguwimo/; - -# ƒnƒbƒVƒ…‚ðì‚é -@NotAtBegin{$NotAtBegin =~ m/$CharRE/g} = (); -@NotAtEnd{ $NotAtEnd =~ m/$CharRE/g} = (); - -$Str = '‚í‚´‚í‚´EUC-JP‚É•ÏŠ·‚µ‚È‚¢‚ÅAShift-JIS‚̂܂܈—'. - '‚Å‚«‚½‚ç‚¢‚¢‚ñ‚¾‚¯‚ÇA‚È‚©‚È‚©–Ê“|‚¾‚Ë‚¦B'; - -print join "\n", linebreak($Str,16); - -sub linebreak{ - my($byte,$i,@chars,$next,@lines); - my($str, $bmax, $pad) = @_; - - # $byte‚ÍŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½‚Æ‚«‚Ì’·‚³ - $byte = $bmax; # ‚·‚®‰üs‚Å‚«‚邽‚߂̉Šú’lB - - # •¶Žš’PˆÊ‚ɂ΂炷 - @chars = $str =~ /$CharRE/go; - - for ($i=0; $i<@chars; $i++) { - $next .= $chars[$i]; # ŽŸ‚Ì•¶Žš - $byte += length $chars[$i]; # ŽŸ‚Ì•¶Žš‚ðŒp‚¬‘«‚µ‚½’·‚³ - - # ŽŸ‚Ì•¶Žš‚ªs––‹Ö‘¥‚Ì‚Æ‚« - next if $i+1 < @chars && exists $NotAtEnd{ $chars[$i] }; - # ŽŸ‚Ì•¶Žš‚ÌŽŸ‚ªs“ª‹Ö‘¥‚Ì‚Æ‚« - next if $i+1 < @chars && exists $NotAtBegin{ $chars[$i+1] }; - - # s‚ÌU‚蕪‚¯ - # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚· - if ($byte <= $bmax) { - $lines[-1] .= $next; - } - # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚Ìs‚Ö - else { - push @lines, $next; - $byte = length $next;# V‚µ‚¢s‚Ì’·‚³ - } - $next = ''; - } - return defined $pad && 1 == length $pad # ‹l‚ß•¨ - ? map {$_ .= $pad x ($bmax - length)} @lines - : @lines; -} - -‚Ԃ牺‚ª‚è‹Ö‘¥‚Ìê‡i$bmin ‚©‚ç $bmax‚Ì”ÍˆÍ‚ð‹–‚·jB - $bmin = $bmax - 2; # —Ⴆ‚ÎB - - # s‚ÌU‚蕪‚¯ - # ’·‚·‚¬‚È‚¯‚ê‚ÎŒp‚¬‘«‚· - if ($byte <= $bmax && @lines && length $lines[-1] < $bmin){ - $lines[-1] .= $next; - } - # ‚³‚à‚È‚¯‚ê‚ÎŽŸ‚Ìs‚Ö - else { - push @lines, $next; - $byte = length $next;# V‚µ‚¢s‚Ì’·‚³ - } - -“ú–{Œê•¶Žš—ñ‚ð•À‚Ñ‘Ö‚¦‚é -‰¼–¼•¶Žš—ñ‚ðŒÜ\‰¹‡‚Ƀ\[ƒg‚·‚郂ƒWƒ…[ƒ‹‚Æ‚µ‚ÄAShiftJIS/Collate.pm ‚ª‚ ‚è‚Ü‚·B“üŽè‚ÆŽg‚¢•û‚ÍPerl‚̃y[ƒW‚É–ß‚ê‚ÎŒ©‚‚©‚è‚Ü‚·B -u“Ç‚ÝE•\‹LƇv‚ÍŽŸ‚̂悤‚É‚µ‚Äs‚¢‚Ü‚·BsortYomiƒƒ\ƒbƒh‚̎󂯎æ‚郊ƒXƒg‚ÌŠe—v‘f‚ÍA[ •\‹L—ñ, “Ç‚Ý—ñ ]‚Æ‚¢‚¤”z—ñƒŠƒtƒ@ƒŒƒ“ƒX‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB -ƒTƒ“ƒvƒ‹ƒR[ƒh -use ShiftJIS::Collate; - -my @data = ( - [qw/ ¬ŽR ‚±‚â‚Ü /], - [qw/ ’·“c ‚È‚ª‚½ /], - [qw/ “c’† ‚½‚È‚© /], - [qw/ —é–Ø ‚·‚¸‚« /], - [qw/ ¬“ˆ ‚±‚¶‚Ü /], - [qw/ Ž™“‡ ‚±‚¶‚Ü /], - [qw/ ¬ŽR ‚¨‚â‚Ü /], - [qw/ ¬“‡ ‚±‚¶‚Ü /], - [qw/ ¬“‡ ‚±‚¶‚Ü /], - [qw/ ŽR“c ‚â‚Ü‚¾ /], - [qw/ ‰i“c ‚È‚ª‚½ /], -); - -@sort = ShiftJIS::Collate->new()->sortYomi(@data); - -uŠÈˆÕ‘ã•\“Ç‚ÝƇv‚ÍŽŸ‚̂悤‚É‚µ‚Äs‚¢‚Ü‚·BsortDaihyoƒƒ\ƒbƒh‚̎󂯎æ‚郊ƒXƒg‚ÌŠe—v‘f‚ÍA[ •\‹L—ñ, “Ç‚Ý—ñ ]‚Æ‚¢‚¤”z—ñƒŠƒtƒ@ƒŒƒ“ƒX‚Å‚È‚¯‚ê‚΂Ȃè‚Ü‚¹‚ñB -ƒTƒ“ƒvƒ‹ƒR[ƒh - -#!perl -use ShiftJIS::Collate; - -my @data = ( - [qw/ ƒÉŒvŽZ ‚ç‚Þ‚¾‚¯‚¢‚³‚ñ /], - [qw/ JIS”Ô† ‚¶‚·‚΂ñ‚²‚¤ /], - [qw/ ˆÀ’B ‚ ‚¾‚¿ /], - [qw/ ˆÀ“¡ ‚ ‚ñ‚Ç‚¤ /], - [qw/ ‰Í¼ ‚©‚³‚¢ /], - [qw/ ‰Í“à ‚©‚í‚¿ /], - [qw/ Šp“c ‚©‚­‚½ /], - [qw/ Šp“c ‚©‚Ç‚½ /], - [qw/ ”@ŒŽ ‚«‚³‚炬 /], - [qw/ ‰Í“à ‚±‚¤‚¿ /], - [qw/ KŽR ‚±‚¤‚â‚Ü /], - [qw/ KŽR ‚³‚«‚â‚Ü /], - [qw/ ²“¡ ‚³‚Æ‚¤ /], - [qw/ ²˜a“c ‚³‚킾 /], - [qw/ ‘ò“‡ ‚³‚킵‚Ü /], - [qw/ ‘ò“c ‚³‚킾 /], - [qw/ àV“c ‚³‚킾 /], - [qw/ Šp“c ‚‚̂¾ /], - [qw/ ’Æˆä ‚Â‚¿‚¢ /], - [qw/ “yˆä ‚‚¿‚¢ /], - [qw/ “y‹ ‚‚¿‚¢ /], - [qw/ ŒËˆä ‚Æ‚¢ /], - [qw/ ŒË“c ‚Æ‚¾ /], - [qw/ “yˆä ‚Ç‚¢ /], - [qw/ “y‹ ‚Ç‚¢ /], - [qw/ “yŠò ‚Æ‚« /], - [qw/ ˆÀ“c ‚â‚·‚¾ /], -); - -@sort = ShiftJIS::Collate->new()->sortDaihyo(@data); - - -Shift-JIS‚ÌŠ¿Žš‚ðŠÜ‚Þƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼ -–{€–Ú‚ÍA‘¼‚Ì€–Ú‚É‘‚µ‚ÄAŒŸ“¢•s[•ª‚Ì‚Ü‚Ü‹Lq‚µ‚Ä‚¢‚Ü‚·‚Ì‚ÅA‚à‚µ‰½‚©ŽQl‚É‚µ‚悤‚ÆŽv‚Á‚½ê‡A\•ª‚É’ˆÓ‚ÌãA”[“¾‚Å‚«‚é‚Ü‚Å‚²Ž©•ª‚Ìì‹ÆŠÂ‹«‚ŃeƒXƒg‚µ‚Ä‚­‚¾‚³‚¢B -Windows (95/98/NT/2000‚È‚Ç) ‚ÅAƒtƒ@ƒCƒ‹–¼‚âƒpƒX–¼‚ªŠ¿Žši‚±‚±‚Å‚Í“ñƒoƒCƒg•¶Žš‚̈Ӗ¡‚ÅŽg‚Á‚Ä‚¢‚Ü‚·‚Ì‚ÅA•½‰¼–¼‚â‹L†‚È‚Ç‚àŠÜ‚Ý‚Ü‚·Bj‚ðŠÜ‚Þê‡APerl‚ňµ‚¤Û‚É–â‘肪¶‚¶‚é‰Â”\«‚ª‚ ‚è‚Ü‚·B -––”öƒoƒCƒg‚ª "\x5C" ‚ÌŠ¿Žš‚ð‚à‚ƒtƒ@ƒCƒ‹–¼/ƒpƒX–¼ -ƒfƒBƒŒƒNƒgƒŠ‘€ìŠÖ”imkdir, rmdir, opendir, -d ‚È‚ÇjAƒtƒ@ƒCƒ‹‘€ìŠÖ”iopen, unlink, -f ‚È‚Çj‚ÅAƒAƒNƒZƒX‚Å‚«‚È‚¢‚±‚Æ‚ª‚ ‚è‚Ü‚·B -ƒtƒ@ƒCƒ‹‚ÌꇂÍA––”ö‚É”¼ŠpƒXƒy[ƒX‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·i—Ⴆ‚ÎA-f '•\ ' ‚Ü‚½‚Í -f "\x95\x5C\x20" ‚È‚ÇjB -ƒfƒBƒŒƒNƒgƒŠ‚ÌꇂÍA––”ö‚É / ‚© \ ‚ð“Y‚¦‚é‚ƃAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·i—Ⴆ‚ÎA-d '•\/' ‚Ü‚½‚Í -d "\x95\x5C/" ‚È‚ÇjB––”ö‚É“Y‚¦‚镶Žš‚𔼊pƒXƒy[ƒX‚Æ‚µ‚Ä‚àA‚¤‚Ü‚­ƒAƒNƒZƒX‚Å‚«‚éꇂª‚ ‚è‚Ü‚·B“Y‚¦‚镶Žš‚ÌŒó•â‚Æ‚µ‚ÄAŽOŽí—Þ‚Ì•¶ŽšiƒXƒ‰ƒbƒVƒ…A‰~‹L†A‹ó”’j‚ð‹“‚°‚Ü‚µ‚½‚ªA‚Ç‚Ì•¶Žš‚ª‚æ‚¢‚©‚ÍAŠÖ”‚É‚æ‚Á‚ĈقȂéꇂª‚ ‚é‚悤‚Å‚·BŽg—p‚·‚é‘O‚É\•ª‚ɃeƒXƒg‚µ‚Ä‚­‚¾‚³‚¢B -‚È‚¨AƒfƒBƒŒƒNƒgƒŠ–¼‚Ì––”ö‚É / ‚© \ ‚ð“Y‚¦‚éê‡A‚à‚Æ‚à‚Æ––”ö‚É / ‚© \ ‚ª•t‚¢‚Ä‚¢‚éꇂɂÍA“ñd‚É•t‚¯‚é‚Æ‚¤‚Ü‚­s‚©‚È‚¢‚¨‚»‚ꂪ‚ ‚è‚Ü‚·‚Ì‚ÅA•¶Žš—ñ˜AŒ‹‚Ì‘O‚ÉŒŸ¸‚µ‚½‚Ù‚¤‚ª‚æ‚¢‚Å‚µ‚傤B -‚Ç‚¤‚µ‚Ä‚à‹““®‚ª•s–¾‚ÅM—Š‚Å‚«‚È‚¢ê‡‚ÍA`` ‚Ü‚½‚Í qx// ‚â system()ŠÖ”‚È‚Ç‚ð’Ê‚¶‚ÄWindows‚̃Rƒ}ƒ“ƒh‚ðŒÄ‚Ô‚Ì‚ª—Ç‚¢‚ÆŽv‚¢‚Ü‚·B -‚¨‚Ü‚¯ - Shift-JIS ‚Å‘‚©‚ꂽ POD ‚ð Perl 5.8.1, 5.8.2 ‚Ì Pod::Html ‚Å HTML ‚É•ÏŠ·‚µ‚½ê‡AƒAƒ“ƒJ[‚Ì–¼‘O‚ÍA ‰p”Žš‚Ɖ¼–¼•¶Žš [0xA6..0xDF] ‚𜂫A ‘¼‚ÌŠeƒoƒCƒg‚͉ºüi'_'j‚É•ÏŠ·‚³‚ê‚é‚悤‚Å‚·B ‹ï‘Ì“I‚É‚ÍAuse locale; ‰º‚ÅAlc ‚Æ s/\W/_/g ‚ðŽÀs‚µ‚½Œ‹‰Ê (cf. Pod::Html::anchorify) ‚É‚È‚è‚Ü‚·B -[2003-11-18] -Perl‚̃y[ƒW diff --git a/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp b/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp deleted file mode 100644 index a3c1fc525b..0000000000 --- a/tests/auto/corelib/io/qtextstream/stdinProcess/main.cpp +++ /dev/null @@ -1,42 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - - -#include -#include - -int main(int, char**) -{ - QTextStream qin(stdin); - if (!qin.atEnd()) { - int a, b, c; - qin >> a >> b >> c; - fprintf(stderr, "%d %d %d\n", a, b, c); - } - return 0; -} diff --git a/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro b/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro deleted file mode 100644 index 4a4c091dcb..0000000000 --- a/tests/auto/corelib/io/qtextstream/stdinProcess/stdinProcess.pro +++ /dev/null @@ -1,9 +0,0 @@ -SOURCES += main.cpp -QT = core -CONFIG += console -CONFIG -= app_bundle -DESTDIR = ./ - -# This app is testdata for tst_qtextstream -target.path = $$[QT_INSTALL_TESTS]/tst_qtextstream/$$TARGET -INSTALLS += target diff --git a/tests/auto/corelib/io/qtextstream/task113817.txt b/tests/auto/corelib/io/qtextstream/task113817.txt deleted file mode 100644 index 281ae8c9f2..0000000000 --- a/tests/auto/corelib/io/qtextstream/task113817.txt +++ /dev/null @@ -1,1095 +0,0 @@ -1 13 -14 -2 13 14 -3 40 -3 -4 16383 4 -5 16383 5 -6 16383 6 -7 16383 7 -8 16383 8 -9 16383 9 -10 16383 10 -11 16383 -1 -12 16383 -1 -13 16383 -1 -14 16383 -1 -15 16383 -1 -16 16383 -1 -17 16383 -1 -18 16383 -1 -19 16383 -1 -20 16383 -1 -21 16383 -1 -22 16383 -1 -23 16383 -1 -24 16383 -1 -25 16383 -1 -26 16383 -1 -27 16383 -1 -28 16383 -1 -29 16383 -1 -30 16383 -1 -31 16383 -1 -32 16383 -1 -33 16383 -1 -34 16383 -1 -35 16383 -1 -36 16383 -1 -37 16383 -1 -38 16383 -1 -39 16383 -1 -40 16383 -1 -41 16383 -1 -42 16383 -1 -43 16383 -1 -44 16383 -1 -45 16383 -1 -46 16383 -1 -47 16383 -1 -48 16383 -1 -49 16383 -1 -50 16383 -1 -51 16383 -1 -52 16383 -1 -53 16383 -1 -54 16383 -1 -55 16383 -1 -56 16383 -1 -57 16383 -1 -58 16383 -1 -59 16383 -1 -60 16383 -1 -61 16383 -1 -62 16383 -1 -63 16383 -1 -64 16383 -1 -65 16383 -1 -66 16383 -1 -67 16383 -1 -68 16383 -1 -69 16383 -1 -70 16383 -1 -71 16383 -1 -72 16383 -1 -73 16383 -1 -74 16383 -1 -75 16383 -1 -76 16383 -1 -77 16383 -1 -78 16383 -1 -79 16383 -1 -80 16383 -1 -81 16383 -1 -82 16383 -1 -83 16383 -1 -84 16383 -1 -85 16383 -1 -86 16383 -1 -87 16383 -1 -88 16383 -1 -89 16383 -1 -90 16383 -1 -91 16383 -1 -92 16383 -1 -93 16383 -1 -94 16383 -1 -95 16383 -1 -96 16383 -1 -97 16383 -1 -98 16383 -1 -99 16383 -1 -100 16383 -1 -101 16383 -1 -102 16383 -1 -103 16383 -1 -104 16383 -1 -105 16383 -1 -106 16383 -1 -107 16383 -1 -108 16383 -1 -109 16383 -1 -110 16383 -1 -111 16383 -1 -112 16383 -1 -113 16383 -1 -114 16383 -1 -115 16383 -1 -116 16383 -1 -117 16383 -1 -118 16383 -1 -119 16383 -1 -120 16383 -1 -121 16383 -1 -122 16383 -1 -123 16383 -1 -124 16383 -1 -125 16383 -1 -126 16383 -1 -127 16383 -1 -128 16383 -1 -129 16383 -1 -130 16383 -1 -131 16383 -1 -132 16383 -1 -133 16383 -1 -134 16383 -1 -135 16383 -1 -136 16383 -1 -137 16383 -1 -138 16383 -1 -139 16383 -1 -140 16383 -1 -141 16383 -1 -142 16383 -1 -143 16383 -1 -144 16383 -1 -145 16383 -1 -146 16383 -1 -147 16383 -1 -148 16383 -1 -149 16383 -1 -150 16383 -1 -151 16383 -1 -152 16383 -1 -153 16383 -1 -154 16383 -1 -155 16383 -1 -156 16383 -1 -157 16383 -1 -158 16383 -1 -159 16383 -1 -160 16383 -1 -161 16383 -1 -162 16383 -1 -163 16383 -1 -164 16383 -1 -165 16383 -1 -166 16383 -1 -167 16383 -1 -168 16383 -1 -169 16383 -1 -170 16383 -1 -171 16383 -1 -172 16383 -1 -173 16383 -1 -174 16383 -1 -175 16383 -1 -176 16383 -1 -177 16383 -1 -178 16383 -1 -179 16383 -1 -180 16383 -1 -181 16383 -1 -182 16383 -1 -183 16383 -1 -184 16383 -1 -185 16383 -1 -186 16383 -1 -187 16383 -1 -188 16383 -1 -189 16383 -1 -190 16383 -1 -191 16383 -1 -192 16383 -1 -193 16383 -1 -194 16383 -1 -195 16383 -1 -196 16383 -1 -197 16383 -1 -198 16383 -1 -199 16383 -1 -200 16383 -1 -201 16383 -1 -202 16383 -1 -203 16383 -1 -204 16383 -1 -205 16383 -1 -206 16383 -1 -207 16383 -1 -208 16383 -1 -209 16383 -1 -210 16383 -1 -211 16383 -1 -212 16383 -1 -213 16383 -1 -214 16383 -1 -215 16383 -1 -216 16383 -1 -217 16383 -1 -218 16383 -1 -219 16383 -1 -220 16383 -1 -221 16383 -1 -222 16383 -1 -223 16383 -1 -224 16383 -1 -225 16383 -1 -226 16383 -1 -227 16383 -1 -228 16383 -1 -229 16383 -1 -230 16383 -1 -231 16383 -1 -232 16383 -1 -233 16383 -1 -234 16383 -1 -235 16383 -1 -236 16383 -1 -237 16383 -1 -238 16383 -1 -239 16383 -1 -240 16383 -1 -241 16383 -1 -242 16383 -1 -243 16383 -1 -244 16383 -1 -245 16383 -1 -246 16383 -1 -247 16383 -1 -248 16383 -1 -249 16383 -1 -250 16383 -1 -251 16383 -1 -252 16383 -1 -253 16383 -1 -254 16383 -1 -255 16383 -1 -256 16383 -1 -257 16383 -1 -258 16383 -1 -259 16383 -1 -260 16383 -1 -261 16383 -1 -262 16383 -1 -263 16383 -1 -264 16383 -1 -265 16383 -1 -266 16383 -1 -267 16383 -1 -268 16383 -1 -269 16383 -1 -270 16383 -1 -271 16383 -1 -272 16383 -1 -273 16383 -1 -274 16383 -1 -275 16383 -1 -276 16383 -1 -277 16383 -1 -278 16383 -1 -279 16383 -1 -280 16383 -1 -281 16383 -1 -282 16383 -1 -283 16383 -1 -284 16383 -1 -285 16383 -1 -286 16383 -1 -287 16383 -1 -288 16383 -1 -289 16383 -1 -290 16383 -1 -291 16383 -1 -292 16383 -1 -293 16383 -1 -294 16383 -1 -295 16383 -1 -296 16383 -1 -297 16383 -1 -298 16383 -1 -299 16383 -1 -300 16383 -1 -301 16383 -1 -302 16383 -1 -303 16383 -1 -304 16383 -1 -305 16383 -1 -306 16383 -1 -307 16383 -1 -308 16383 -1 -309 16383 -1 -310 16383 -1 -311 16383 -1 -312 16383 -1 -313 16383 -1 -314 16383 -1 -315 16383 -1 -316 16383 -1 -317 16383 -1 -318 16383 -1 -319 16383 -1 -320 16383 -1 -321 16383 -1 -322 16383 -1 -323 16383 -1 -324 16383 -1 -325 16383 -1 -326 16383 -1 -327 16383 -1 -328 16383 -1 -329 16383 -1 -330 16383 -1 -331 16383 -1 -332 16383 -1 -333 16383 -1 -334 16383 -1 -335 16383 -1 -336 16383 -1 -337 16383 -1 -338 16383 -1 -339 16383 -1 -340 16383 -1 -341 16383 -1 -342 16383 -1 -343 16383 -1 -344 16383 -1 -345 16383 -1 -346 16383 -1 -347 16383 -1 -348 16383 -1 -349 16383 -1 -350 16383 -1 -351 16383 -1 -352 16383 -1 -353 16383 -1 -354 16383 -1 -355 16383 -1 -356 16383 -1 -357 16383 -1 -358 16383 -1 -359 16383 -1 -360 16383 -1 -361 16383 -1 -362 16383 -1 -363 16383 -1 -364 16383 -1 -365 16383 -1 -366 16383 -1 -367 16383 -1 -368 16383 -1 -369 16383 -1 -370 16383 -1 -371 16383 -1 -372 16383 -1 -373 16383 -1 -374 16383 -1 -375 16383 -1 -376 16383 -1 -377 16383 -1 -378 16383 -1 -379 16383 -1 -380 16383 -1 -381 16383 -1 -382 16383 -1 -383 16383 -1 -384 16383 -1 -385 16383 -1 -386 16383 -1 -387 16383 -1 -388 16383 -1 -389 16383 -1 -390 16383 -1 -391 16383 -1 -392 16383 -1 -393 16383 -1 -394 16383 -1 -395 16383 -1 -396 16383 -1 -397 16383 -1 -398 16383 -1 -399 16383 -1 -400 16383 -1 -401 16383 -1 -402 16383 -1 -403 16383 -1 -404 16383 -1 -405 16383 -1 -406 16383 -1 -407 16383 -1 -408 16383 -1 -409 16383 -1 -410 16383 -1 -411 16383 -1 -412 16383 -1 -413 16383 -1 -414 16383 -1 -415 16383 -1 -416 16383 -1 -417 16383 -1 -418 16383 -1 -419 16383 -1 -420 16383 -1 -421 16383 -1 -422 16383 -1 -423 16383 -1 -424 16383 -1 -425 16383 -1 -426 16383 -1 -427 16383 -1 -428 16383 -1 -429 16383 -1 -430 16383 -1 -431 16383 -1 -432 16383 -1 -433 16383 -1 -434 16383 -1 -435 16383 -1 -436 16383 -1 -437 16383 -1 -438 16383 -1 -439 16383 -1 -440 16383 -1 -441 16383 -1 -442 16383 -1 -443 16383 -1 -444 16383 -1 -445 16383 -1 -446 16383 -1 -447 16383 -1 -448 16383 -1 -449 16383 -1 -450 16383 -1 -451 16383 -1 -452 16383 -1 -453 16383 -1 -454 16383 -1 -455 16383 -1 -456 16383 -1 -457 16383 -1 -458 16383 -1 -459 16383 -1 -460 16383 -1 -461 16383 -1 -462 16383 -1 -463 16383 -1 -464 16383 -1 -465 16383 -1 -466 16383 -1 -467 16383 -1 -468 16383 -1 -469 16383 -1 -470 16383 -1 -471 16383 -1 -472 16383 -1 -473 16383 -1 -474 16383 -1 -475 16383 -1 -476 16383 -1 -477 16383 -1 -478 16383 -1 -479 16383 -1 -480 16383 -1 -481 16383 -1 -482 16383 -1 -483 16383 -1 -484 16383 -1 -485 16383 -1 -486 16383 -1 -487 16383 -1 -488 16383 -1 -489 16383 -1 -490 16383 -1 -491 16383 -1 -492 16383 -1 -493 16383 -1 -494 16383 -1 -495 16383 -1 -496 16383 -1 -497 16383 -1 -498 16383 -1 -499 16383 -1 -500 16383 -1 -501 16383 -1 -502 16383 -1 -503 16383 -1 -504 16383 -1 -505 16383 -1 -506 16383 -1 -507 16383 -1 -508 16383 -1 -509 16383 -1 -510 16383 -1 -511 16383 -1 -512 16383 -1 -513 16383 -1 -514 16383 -1 -515 16383 -1 -516 16383 -1 -517 16383 -1 -518 16383 -1 -519 16383 -1 -520 16383 -1 -521 16383 -1 -522 16383 -1 -523 16383 -1 -524 16383 -1 -525 16383 -1 -526 16383 -1 -527 16383 -1 -528 16383 -1 -529 16383 -1 -530 16383 -1 -531 16383 -1 -532 16383 -1 -533 16383 -1 -534 16383 -1 -535 16383 -1 -536 16383 -1 -537 16383 -1 -538 16383 -1 -539 16383 -1 -540 16383 -1 -541 16383 -1 -542 16383 -1 -543 16383 -1 -544 16383 -1 -545 16383 -1 -546 16383 -1 -547 16383 -1 -548 16383 -1 -549 16383 -1 -550 16383 -1 -551 16383 -1 -552 16383 -1 -553 16383 -1 -554 16383 -1 -555 16383 -1 -556 16383 -1 -557 16383 -1 -558 16383 -1 -559 16383 -1 -560 16383 -1 -561 16383 -1 -562 16383 -1 -563 16383 -1 -564 16383 -1 -565 16383 -1 -566 16383 -1 -567 16383 -1 -568 16383 -1 -569 16383 -1 -570 16383 -1 -571 16383 -1 -572 16383 -1 -573 16383 -1 -574 16383 -1 -575 16383 -1 -576 16383 -1 -577 16383 -1 -578 16383 -1 -579 16383 -1 -580 16383 -1 -581 16383 -1 -582 16383 -1 -583 16383 -1 -584 16383 -1 -585 16383 -1 -586 16383 -1 -587 16383 -1 -588 16383 -1 -589 16383 -1 -590 16383 -1 -591 16383 -1 -592 16383 -1 -593 16383 -1 -594 16383 -1 -595 16383 -1 -596 16383 -1 -597 16383 -1 -598 16383 -1 -599 16383 -1 -600 16383 -1 -601 16383 -1 -602 16383 -1 -603 16383 -1 -604 16383 -1 -605 16383 -1 -606 16383 -1 -607 16383 -1 -608 16383 -1 -609 16383 -1 -610 16383 -1 -611 16383 -1 -612 16383 -1 -613 16383 -1 -614 16383 -1 -615 16383 -1 -616 16383 -1 -617 16383 -1 -618 16383 -1 -619 16383 -1 -620 16383 -1 -621 16383 -1 -622 16383 -1 -623 16383 -1 -624 16383 -1 -625 16383 -1 -626 16383 -1 -627 16383 -1 -628 16383 -1 -629 16383 -1 -630 16383 -1 -631 16383 -1 -632 16383 -1 -633 16383 -1 -634 16383 -1 -635 16383 -1 -636 16383 -1 -637 16383 -1 -638 16383 -1 -639 16383 -1 -640 16383 -1 -641 16383 -1 -642 16383 -1 -643 16383 -1 -644 16383 -1 -645 16383 -1 -646 16383 -1 -647 16383 -1 -648 16383 -1 -649 16383 -1 -650 16383 -1 -651 16383 -1 -652 16383 -1 -653 16383 -1 -654 16383 -1 -655 16383 -1 -656 16383 -1 -657 16383 -1 -658 16383 -1 -659 16383 -1 -660 16383 -1 -661 16383 -1 -662 16383 -1 -663 16383 -1 -664 16383 -1 -665 16383 -1 -666 16383 -1 -667 16383 -1 -668 16383 -1 -669 16383 -1 -670 16383 -1 -671 16383 -1 -672 16383 -1 -673 16383 -1 -674 16383 -1 -675 16383 -1 -676 16383 -1 -677 16383 -1 -678 16383 -1 -679 16383 -1 -680 16383 -1 -681 16383 -1 -682 16383 -1 -683 16383 -1 -684 16383 -1 -685 16383 -1 -686 16383 -1 -687 16383 -1 -688 16383 -1 -689 16383 -1 -690 16383 -1 -691 16383 -1 -692 16383 -1 -693 16383 -1 -694 16383 -1 -695 16383 -1 -696 16383 -1 -697 16383 -1 -698 16383 -1 -699 16383 -1 -700 16383 -1 -701 16383 -1 -702 16383 -1 -703 16383 -1 -704 16383 -1 -705 16383 -1 -706 16383 -1 -707 16383 -1 -708 16383 -1 -709 16383 -1 -710 16383 -1 -711 16383 -1 -712 16383 -1 -713 16383 -1 -714 16383 -1 -715 16383 -1 -716 16383 -1 -717 16383 -1 -718 16383 -1 -719 16383 -1 -720 16383 -1 -721 16383 -1 -722 16383 -1 -723 16383 -1 -724 16383 -1 -725 16383 -1 -726 16383 -1 -727 16383 -1 -728 16383 -1 -729 16383 -1 -730 16383 -1 -731 16383 -1 -732 16383 -1 -733 16383 -1 -734 16383 -1 -735 16383 -1 -736 16383 -1 -737 16383 -1 -738 16383 -1 -739 16383 -1 -740 16383 -1 -741 16383 -1 -742 16383 -1 -743 16383 -1 -744 16383 -1 -745 16383 -1 -746 16383 -1 -747 16383 -1 -748 16383 -1 -749 16383 -1 -750 16383 -1 -751 16383 -1 -752 16383 -1 -753 16383 -1 -754 16383 -1 -755 16383 -1 -756 16383 -1 -757 16383 -1 -758 16383 -1 -759 16383 -1 -760 16383 -1 -761 16383 -1 -762 16383 -1 -763 16383 -1 -764 16383 -1 -765 16383 -1 -766 16383 -1 -767 16383 -1 -768 16383 -1 -769 16383 -1 -770 16383 -1 -771 16383 -1 -772 16383 -1 -773 16383 -1 -774 16383 -1 -775 16383 -1 -776 16383 -1 -777 16383 -1 -778 16383 -1 -779 16383 -1 -780 16383 -1 -781 16383 -1 -782 16383 -1 -783 16383 -1 -784 16383 -1 -785 16383 -1 -786 16383 -1 -787 16383 -1 -788 16383 -1 -789 16383 -1 -790 16383 -1 -791 16383 -1 -792 16383 -1 -793 16383 -1 -794 16383 -1 -795 16383 -1 -796 16383 -1 -797 16383 -1 -798 16383 -1 -799 16383 -1 -800 16383 -1 -801 16383 -1 -802 16383 -1 -803 16383 -1 -804 16383 -1 -805 16383 -1 -806 16383 -1 -807 16383 -1 -808 16383 -1 -809 16383 -1 -810 16383 -1 -811 16383 -1 -812 16383 -1 -813 16383 -1 -814 16383 -1 -815 16383 -1 -816 16383 -1 -817 16383 -1 -818 16383 -1 -819 16383 -1 -820 16383 -1 -821 16383 -1 -822 16383 -1 -823 16383 -1 -824 16383 -1 -825 16383 -1 -826 16383 -1 -827 16383 -1 -828 16383 -1 -829 16383 -1 -830 16383 -1 -831 16383 -1 -832 16383 -1 -833 16383 -1 -834 16383 -1 -835 16383 -1 -836 16383 -1 -837 16383 -1 -838 16383 -1 -839 16383 -1 -840 16383 -1 -841 16383 -1 -842 16383 -1 -843 16383 -1 -844 16383 -1 -845 16383 -1 -846 16383 -1 -847 16383 -1 -848 16383 -1 -849 16383 -1 -850 16383 -1 -851 16383 -1 -852 16383 -1 -853 16383 -1 -854 16383 -1 -855 16383 -1 -856 16383 -1 -857 16383 -1 -858 16383 -1 -859 16383 -1 -860 16383 -1 -861 16383 -1 -862 16383 -1 -863 16383 -1 -864 16383 -1 -865 16383 -1 -866 16383 -1 -867 16383 -1 -868 16383 -1 -869 16383 -1 -870 16383 -1 -871 16383 -1 -872 16383 -1 -873 16383 -1 -874 16383 -1 -875 16383 -1 -876 16383 -1 -877 16383 -1 -878 16383 -1 -879 16383 -1 -880 16383 -1 -881 16383 -1 -882 16383 -1 -883 16383 -1 -884 16383 -1 -885 16383 -1 -886 16383 -1 -887 16383 -1 -888 16383 -1 -889 16383 -1 -890 16383 -1 -891 16383 -1 -892 16383 -1 -893 16383 -1 -894 16383 -1 -895 16383 -1 -896 16383 -1 -897 16383 -1 -898 16383 -1 -899 16383 -1 -900 16383 -1 -901 16383 -1 -902 16383 -1 -903 16383 -1 -904 16383 -1 -905 16383 -1 -906 16383 -1 -907 16383 -1 -908 16383 -1 -909 16383 -1 -910 16383 -1 -911 16383 -1 -912 16383 -1 -913 16383 -1 -914 16383 -1 -915 16383 -1 -916 16383 -1 -917 16383 -1 -918 16383 -1 -919 16383 -1 -920 16383 -1 -921 16383 -1 -922 16383 -1 -923 16383 -1 -924 16383 -1 -925 16383 -1 -926 16383 -1 -927 16383 -1 -928 16383 -1 -929 16383 -1 -930 16383 -1 -931 16383 -1 -932 16383 -1 -933 16383 -1 -934 16383 -1 -935 16383 -1 -936 16383 -1 -937 16383 -1 -938 16383 -1 -939 16383 -1 -940 16383 -1 -941 16383 -1 -942 16383 -1 -943 16383 -1 -944 16383 -1 -945 16383 -1 -946 16383 -1 -947 16383 -1 -948 16383 -1 -949 16383 -1 -950 16383 -1 -951 16383 -1 -952 16383 -1 -953 16383 -1 -954 16383 -1 -955 16383 -1 -956 16383 -1 -957 16383 -1 -958 16383 -1 -959 16383 -1 -960 16383 -1 -961 16383 -1 -962 16383 -1 -963 16383 -1 -964 16383 -1 -965 16383 -1 -966 16383 -1 -967 16383 -1 -968 16383 -1 -969 16383 -1 -970 16383 -1 -971 16383 -1 -972 16383 -1 -973 16383 -1 -974 16383 -1 -975 16383 -1 -976 16383 -1 -977 16383 -1 -978 16383 -1 -979 16383 -1 -980 16383 -1 -981 16383 -1 -982 16383 -1 -983 16383 -1 -984 16383 -1 -985 16383 -1 -986 16383 -1 -987 16383 -1 -988 16383 -1 -989 16383 -1 -990 16383 -1 -991 16383 -1 -992 16383 -1 -993 16383 -1 -994 16383 -1 -995 16383 -1 -996 16383 -1 -997 16383 -1 -998 16383 -1 -999 16383 -1 -1000 16383 -1 -1001 16383 -1 -1002 16383 -1 -1003 16383 -1 -1004 16383 -1 -1005 16383 -1 -1006 16383 -1 -1007 16383 -1 -1008 16383 -1 -1009 16383 -1 -1010 16383 -1 -1011 16383 -1 -1012 16383 -1 -1013 16383 -1 -1014 16383 -1 -1015 16383 -1 -1016 16383 -1 -1017 16383 -1 -1018 16383 -1 -1019 16383 -1 -1020 16383 -1 -1021 16383 -1 -1022 16383 -1 -1023 16383 -1 -1024 16383 -1 -1025 16383 -1 -1026 16383 -1 -1027 16383 -1 -1028 16383 -1 -1029 16383 -1 -1030 16383 -1 -1031 16383 -1 -1032 16383 -1 -1033 16383 -1 -1034 16383 -1 -1035 16383 -1 -1036 16383 -1 -1037 16383 -1 -1038 16383 -1 -1039 16383 -1 -1040 16383 -1 -1041 16383 -1 -1042 16383 -1 -1043 16383 -1 -1044 16383 -1 -1045 16383 -1 -1046 16383 -1 -1047 16383 -1 -1048 16383 -1 -1049 16383 -1 -1050 16383 -1 -1051 16383 -1 -1052 16383 -1 -1053 16383 -1 -1054 16383 -1 -1055 16383 -1 -1056 16383 -1 -1057 16383 -1 -1058 16383 -1 -1059 16383 -1 -1060 16383 -1 -1061 16383 -1 -1062 16383 -1 -1063 16383 -1 -1064 16383 -1 -1065 16383 -1 -1066 16383 -1 -1067 16383 -1 -1068 16383 -1 -1069 16383 -1 -1070 16383 -1 -1071 16383 -1 -1072 16383 -1 -1073 16383 -1 -1074 16383 -1 -1075 16383 -1 -1076 16383 -1 -1077 16383 -1 -1078 16383 -1 -1079 16383 -1 -1080 16383 -1 -1081 16383 -1 -1082 16383 -1 -1083 16383 -1 -1084 16383 -1 -1085 16383 -1 -1086 16383 -1 -1087 16383 -1 -1088 16383 -1 -1089 16383 -1 -1090 16383 -1 -1091 16383 -1 -1092 16383 -1 -1093 16383 -1 -1094 16383 -1 -1095 16383 -1 diff --git a/tests/auto/corelib/io/qtextstream/test/test.pro b/tests/auto/corelib/io/qtextstream/test/test.pro deleted file mode 100644 index 3dcfa0b414..0000000000 --- a/tests/auto/corelib/io/qtextstream/test/test.pro +++ /dev/null @@ -1,26 +0,0 @@ -CONFIG += testcase -TARGET = ../tst_qtextstream -QT = core network testlib -SOURCES = ../tst_qtextstream.cpp -RESOURCES += ../qtextstream.qrc - -win32 { - CONFIG(debug, debug|release) { - TARGET = ../../debug/tst_qtextstream - } else { - TARGET = ../../release/tst_qtextstream - } -} - -TESTDATA += \ - ../rfc3261.txt \ - ../shift-jis.txt \ - ../task113817.txt \ - ../qtextstream.qrc \ - ../tst_qtextstream.cpp \ - ../resources \ - ../BLACKLIST - -builtin_testdata { - DEFINES += BUILTIN_TESTDATA -} diff --git a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp b/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp deleted file mode 100644 index df8746e518..0000000000 --- a/tests/auto/corelib/io/qtextstream/tst_qtextstream.cpp +++ /dev/null @@ -1,3057 +0,0 @@ -/**************************************************************************** -** -** Copyright (C) 2016 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the test suite of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -#include - -#ifdef Q_OS_UNIX -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#if QT_CONFIG(process) -# include -#endif -#include "../../../network-settings.h" - - -QT_BEGIN_NAMESPACE -template<> struct QMetaTypeId -{ enum { Defined = 1 }; static inline int qt_metatype_id() { return QMetaType::Int; } }; -QT_END_NAMESPACE - -class tst_QTextStream : public QObject -{ - Q_OBJECT - -public: - tst_QTextStream(); - -public slots: - void initTestCase(); - void cleanup(); - void cleanupTestCase(); - -private slots: - void getSetCheck(); - void construction(); - - // lines - void readLineFromDevice_data(); - void readLineFromDevice(); - void readLineFromString_data(); - void readLineFromString(); - void readLineFromTextDevice_data(); - void readLineFromTextDevice(); - void readLineUntilNull(); - void readLineMaxlen_data(); - void readLineMaxlen(); - void readLinesFromBufferCRCR(); - void readLineInto(); - - // all - void readAllFromDevice_data(); - void readAllFromDevice(); - void readAllFromString_data(); - void readAllFromString(); - void readLineFromStringThenChangeString(); - - // device tests - void setDevice(); - - // char operators - void QChar_operators_FromDevice_data(); - void QChar_operators_FromDevice(); - void char_operators_FromDevice_data(); - void char_operators_FromDevice(); - - // natural number read operator - void signedShort_read_operator_FromDevice_data(); - void signedShort_read_operator_FromDevice(); - void unsignedShort_read_operator_FromDevice_data(); - void unsignedShort_read_operator_FromDevice(); - void signedInt_read_operator_FromDevice_data(); - void signedInt_read_operator_FromDevice(); - void unsignedInt_read_operator_FromDevice_data(); - void unsignedInt_read_operator_FromDevice(); - void qlonglong_read_operator_FromDevice_data(); - void qlonglong_read_operator_FromDevice(); - void qulonglong_read_operator_FromDevice_data(); - void qulonglong_read_operator_FromDevice(); - - // natural number write operator - void signedShort_write_operator_ToDevice_data(); - void signedShort_write_operator_ToDevice(); - void unsignedShort_write_operator_ToDevice_data(); - void unsignedShort_write_operator_ToDevice(); - void signedInt_write_operator_ToDevice_data(); - void signedInt_write_operator_ToDevice(); - void unsignedInt_write_operator_ToDevice_data(); - void unsignedInt_write_operator_ToDevice(); - void qlonglong_write_operator_ToDevice_data(); - void qlonglong_write_operator_ToDevice(); - void qulonglong_write_operator_ToDevice_data(); - void qulonglong_write_operator_ToDevice(); - - void int_read_with_locale_data(); - void int_read_with_locale(); - - void int_write_with_locale_data(); - void int_write_with_locale(); - - // real number read operator - void float_read_operator_FromDevice_data(); - void float_read_operator_FromDevice(); - void double_read_operator_FromDevice_data(); - void double_read_operator_FromDevice(); - - // real number write operator - void float_write_operator_ToDevice_data(); - void float_write_operator_ToDevice(); - void double_write_operator_ToDevice_data(); - void double_write_operator_ToDevice(); - - void double_write_with_flags_data(); - void double_write_with_flags(); - - void double_write_with_precision_data(); - void double_write_with_precision(); - - // text read operators - void charPtr_read_operator_FromDevice_data(); - void charPtr_read_operator_FromDevice(); - void stringRef_read_operator_FromDevice_data(); - void stringRef_read_operator_FromDevice(); - void byteArray_read_operator_FromDevice_data(); - void byteArray_read_operator_FromDevice(); - - // text write operators - void string_write_operator_ToDevice_data(); - void string_write_operator_ToDevice(); - void latin1String_write_operator_ToDevice(); - void stringref_write_operator_ToDevice(); - - // other - void skipWhiteSpace_data(); - void skipWhiteSpace(); - void lineCount_data(); - void lineCount(); - void performance(); - void hexTest_data(); - void hexTest(); - void binTest_data(); - void binTest(); - void octTest_data(); - void octTest(); - void zeroTermination(); - void ws_manipulator(); - void stillOpenWhenAtEnd(); - void readNewlines_data(); - void readNewlines(); - void seek(); - void pos(); - void pos2(); - void pos3LargeFile(); - void readStdin(); - void readAllFromStdin(); - void readLineFromStdin(); - void read(); - void qbool(); - void forcePoint(); - void forceSign(); - void read0d0d0a(); - void numeralCase_data(); - void numeralCase(); - void nanInf(); - void utf8IncompleteAtBufferBoundary_data(); - void utf8IncompleteAtBufferBoundary(); - void writeSeekWriteNoBOM(); - - // status - void status_real_read_data(); - void status_real_read(); - void status_integer_read(); - void status_word_read(); - void status_write_error(); - - // use case tests - void useCase1(); - void useCase2(); - - // manipulators - void manipulators_data(); - void manipulators(); - - // UTF-16 BOM (Byte Order Mark) - void generateBOM(); - void readBomSeekBackReadBomAgain(); - - // Regression tests for old bugs - void alignAccountingStyle(); - void setCodec(); - - void textModeOnEmptyRead(); - -private: - void generateLineData(bool for_QString); - void generateAllData(bool for_QString); - void generateOperatorCharData(bool for_QString); - void generateNaturalNumbersData(bool for_QString); - void generateRealNumbersData(bool for_QString); - void generateStringData(bool for_QString); - void generateRealNumbersDataWrite(); - - QTemporaryDir tempDir; - QString testFileName; -#ifdef BUILTIN_TESTDATA - QSharedPointer m_dataDir; -#endif - const QString m_rfc3261FilePath; - const QString m_shiftJisFilePath; -}; - -void runOnExit() -{ - QByteArray buffer; - QTextStream(&buffer) << "This will try to use QTextCodec::codecForLocale" << endl; -} -Q_DESTRUCTOR_FUNCTION(runOnExit) - -tst_QTextStream::tst_QTextStream() - : tempDir(QDir::tempPath() + "/tst_qtextstream.XXXXXX") - , m_rfc3261FilePath(QFINDTESTDATA("rfc3261.txt")) - , m_shiftJisFilePath(QFINDTESTDATA("shift-jis.txt")) -{ -} - -void tst_QTextStream::initTestCase() -{ - QVERIFY2(tempDir.isValid(), qPrintable(tempDir.errorString())); - QVERIFY(!m_rfc3261FilePath.isEmpty()); - QVERIFY(!m_shiftJisFilePath.isEmpty()); - - testFileName = tempDir.path() + "/testfile"; - -#ifdef BUILTIN_TESTDATA - m_dataDir = QEXTRACTTESTDATA("/"); - QVERIFY2(QDir::setCurrent(m_dataDir->path()), qPrintable("Could not chdir to " + m_dataDir->path())); -#else - // chdir into the testdata dir and refer to our helper apps with relative paths - QString testdata_dir = QFileInfo(QFINDTESTDATA("stdinProcess")).absolutePath(); - QVERIFY2(QDir::setCurrent(testdata_dir), qPrintable("Could not chdir to " + testdata_dir)); -#endif -} - -// Testing get/set functions -void tst_QTextStream::getSetCheck() -{ - // Initialize codecs - QTextStream obj1; - // QTextCodec * QTextStream::codec() - // void QTextStream::setCodec(QTextCodec *) - QTextCodec *var1 = QTextCodec::codecForName("en"); - obj1.setCodec(var1); - QCOMPARE(var1, obj1.codec()); - obj1.setCodec((QTextCodec *)0); - QCOMPARE((QTextCodec *)0, obj1.codec()); - - // bool QTextStream::autoDetectUnicode() - // void QTextStream::setAutoDetectUnicode(bool) - obj1.setAutoDetectUnicode(false); - QCOMPARE(false, obj1.autoDetectUnicode()); - obj1.setAutoDetectUnicode(true); - QCOMPARE(true, obj1.autoDetectUnicode()); - - // bool QTextStream::generateByteOrderMark() - // void QTextStream::setGenerateByteOrderMark(bool) - obj1.setGenerateByteOrderMark(false); - QCOMPARE(false, obj1.generateByteOrderMark()); - obj1.setGenerateByteOrderMark(true); - QCOMPARE(true, obj1.generateByteOrderMark()); - - // QIODevice * QTextStream::device() - // void QTextStream::setDevice(QIODevice *) - QFile *var4 = new QFile; - obj1.setDevice(var4); - QCOMPARE(static_cast(var4), obj1.device()); - obj1.setDevice((QIODevice *)0); - QCOMPARE((QIODevice *)0, obj1.device()); - delete var4; - - // Status QTextStream::status() - // void QTextStream::setStatus(Status) - obj1.setStatus(QTextStream::Status(QTextStream::Ok)); - QCOMPARE(QTextStream::Status(QTextStream::Ok), obj1.status()); - obj1.setStatus(QTextStream::Status(QTextStream::ReadPastEnd)); - QCOMPARE(QTextStream::Status(QTextStream::ReadPastEnd), obj1.status()); - obj1.resetStatus(); - obj1.setStatus(QTextStream::Status(QTextStream::ReadCorruptData)); - QCOMPARE(QTextStream::Status(QTextStream::ReadCorruptData), obj1.status()); - - // FieldAlignment QTextStream::fieldAlignment() - // void QTextStream::setFieldAlignment(FieldAlignment) - obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignLeft)); - QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignLeft), obj1.fieldAlignment()); - obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignRight)); - QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignRight), obj1.fieldAlignment()); - obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignCenter)); - QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignCenter), obj1.fieldAlignment()); - obj1.setFieldAlignment(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle)); - QCOMPARE(QTextStream::FieldAlignment(QTextStream::AlignAccountingStyle), obj1.fieldAlignment()); - - // QChar QTextStream::padChar() - // void QTextStream::setPadChar(QChar) - QChar var7 = 'Q'; - obj1.setPadChar(var7); - QCOMPARE(var7, obj1.padChar()); - obj1.setPadChar(QChar()); - QCOMPARE(QChar(), obj1.padChar()); - - // int QTextStream::fieldWidth() - // void QTextStream::setFieldWidth(int) - obj1.setFieldWidth(0); - QCOMPARE(0, obj1.fieldWidth()); - obj1.setFieldWidth(INT_MIN); - QCOMPARE(INT_MIN, obj1.fieldWidth()); - obj1.setFieldWidth(INT_MAX); - QCOMPARE(INT_MAX, obj1.fieldWidth()); - - // NumberFlags QTextStream::numberFlags() - // void QTextStream::setNumberFlags(NumberFlags) - obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ShowBase)); - QCOMPARE(QTextStream::NumberFlags(QTextStream::ShowBase), obj1.numberFlags()); - obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForcePoint)); - QCOMPARE(QTextStream::NumberFlags(QTextStream::ForcePoint), obj1.numberFlags()); - obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::ForceSign)); - QCOMPARE(QTextStream::NumberFlags(QTextStream::ForceSign), obj1.numberFlags()); - obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseBase)); - QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseBase), obj1.numberFlags()); - obj1.setNumberFlags(QTextStream::NumberFlags(QTextStream::UppercaseDigits)); - QCOMPARE(QTextStream::NumberFlags(QTextStream::UppercaseDigits), obj1.numberFlags()); - - // int QTextStream::integerBase() - // void QTextStream::setIntegerBase(int) - obj1.setIntegerBase(0); - QCOMPARE(0, obj1.integerBase()); - obj1.setIntegerBase(INT_MIN); - QCOMPARE(INT_MIN, obj1.integerBase()); - obj1.setIntegerBase(INT_MAX); - QCOMPARE(INT_MAX, obj1.integerBase()); - - // RealNumberNotation QTextStream::realNumberNotation() - // void QTextStream::setRealNumberNotation(RealNumberNotation) - obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::SmartNotation)); - QCOMPARE(QTextStream::RealNumberNotation(QTextStream::SmartNotation), obj1.realNumberNotation()); - obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::FixedNotation)); - QCOMPARE(QTextStream::RealNumberNotation(QTextStream::FixedNotation), obj1.realNumberNotation()); - obj1.setRealNumberNotation(QTextStream::RealNumberNotation(QTextStream::ScientificNotation)); - QCOMPARE(QTextStream::RealNumberNotation(QTextStream::ScientificNotation), obj1.realNumberNotation()); - - // int QTextStream::realNumberPrecision() - // void QTextStream::setRealNumberPrecision(int) - obj1.setRealNumberPrecision(0); - QCOMPARE(0, obj1.realNumberPrecision()); - obj1.setRealNumberPrecision(INT_MIN); - QCOMPARE(6, obj1.realNumberPrecision()); // Setting a negative precision reverts it to the default value (6). - obj1.setRealNumberPrecision(INT_MAX); - QCOMPARE(INT_MAX, obj1.realNumberPrecision()); -} - -void tst_QTextStream::cleanup() -{ - QCoreApplication::instance()->processEvents(); -} - -void tst_QTextStream::cleanupTestCase() -{ -#ifdef BUILTIN_TESTDATA - QDir::setCurrent(QCoreApplication::applicationDirPath()); -#endif -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::construction() -{ - QTextStream stream; - QCOMPARE(stream.codec(), QTextCodec::codecForLocale()); - QCOMPARE(stream.device(), static_cast(0)); - QCOMPARE(stream.string(), static_cast(0)); - - QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device"); - QVERIFY(stream.atEnd()); - - QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device"); - QCOMPARE(stream.readAll(), QString()); - -} - -void tst_QTextStream::generateLineData(bool for_QString) -{ - QTest::addColumn("data"); - QTest::addColumn("lines"); - - // latin-1 - QTest::newRow("emptyer") << QByteArray() << QStringList(); - QTest::newRow("lf") << QByteArray("\n") << (QStringList() << ""); - QTest::newRow("crlf") << QByteArray("\r\n") << (QStringList() << ""); - QTest::newRow("oneline/nothing") << QByteArray("ole") << (QStringList() << "ole"); - QTest::newRow("oneline/lf") << QByteArray("ole\n") << (QStringList() << "ole"); - QTest::newRow("oneline/crlf") << QByteArray("ole\r\n") << (QStringList() << "ole"); - QTest::newRow("twolines/lf/lf") << QByteArray("ole\ndole\n") << (QStringList() << "ole" << "dole"); - QTest::newRow("twolines/crlf/crlf") << QByteArray("ole\r\ndole\r\n") << (QStringList() << "ole" << "dole"); - QTest::newRow("twolines/lf/crlf") << QByteArray("ole\ndole\r\n") << (QStringList() << "ole" << "dole"); - QTest::newRow("twolines/lf/nothing") << QByteArray("ole\ndole") << (QStringList() << "ole" << "dole"); - QTest::newRow("twolines/crlf/nothing") << QByteArray("ole\r\ndole") << (QStringList() << "ole" << "dole"); - QTest::newRow("threelines/lf/lf/lf") << QByteArray("ole\ndole\ndoffen\n") << (QStringList() << "ole" << "dole" << "doffen"); - QTest::newRow("threelines/crlf/crlf/crlf") << QByteArray("ole\r\ndole\r\ndoffen\r\n") << (QStringList() << "ole" << "dole" << "doffen"); - QTest::newRow("threelines/crlf/crlf/nothing") << QByteArray("ole\r\ndole\r\ndoffen") << (QStringList() << "ole" << "dole" << "doffen"); - - if (!for_QString) { - // utf-8 - QTest::newRow("utf8/twolines") - << QByteArray("\xef\xbb\xbf" - "\x66\x67\x65\x0a" - "\x66\x67\x65\x0a", 11) - << (QStringList() << "fge" << "fge"); - - // utf-16 - // one line - QTest::newRow("utf16-BE/nothing") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65", 8) << (QStringList() << QLatin1String("\345ge")); - QTest::newRow("utf16-LE/nothing") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00", 8) << (QStringList() << QLatin1String("\345ge")); - QTest::newRow("utf16-BE/lf") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << (QStringList() << QLatin1String("\345ge")); - QTest::newRow("utf16-LE/lf") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << (QStringList() << QLatin1String("\345ge")); - - // two lines - QTest::newRow("utf16-BE/twolines") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0a" - "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18) - << (QStringList() << QLatin1String("\345ge") << QLatin1String("\345ge")); - QTest::newRow("utf16-LE/twolines") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0a\x00" - "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18) - << (QStringList() << QLatin1String("\345ge") << QLatin1String("\345ge")); - - // three lines - QTest::newRow("utf16-BE/threelines") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0a" - "\x00\xe5\x00\x67\x00\x65\x00\x0a" - "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26) - << (QStringList() << QLatin1String("\345ge") << QLatin1String("\345ge") << QLatin1String("\345ge")); - QTest::newRow("utf16-LE/threelines") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0a\x00" - "\xe5\x00\x67\x00\x65\x00\x0a\x00" - "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26) - << (QStringList() << QLatin1String("\345ge") << QLatin1String("\345ge") << QLatin1String("\345ge")); - - // utf-32 - QTest::newRow("utf32-BE/twolines") - << QByteArray("\x00\x00\xfe\xff" - "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a" - "\x00\x00\x00\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a", 36) - << (QStringList() << QLatin1String("\345ge") << QLatin1String("\345ge")); - QTest::newRow("utf32-LE/twolines") - << QByteArray("\xff\xfe\x00\x00" - "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00" - "\xe5\x00\x00\x00\x67\x00\x00\x00\x65\x00\x00\x00\x0a\x00\x00\x00", 36) - << (QStringList() << QLatin1String("\345ge") << QLatin1String("\345ge")); - } - - // partials - QTest::newRow("cr") << QByteArray("\r") << (QStringList() << ""); - QTest::newRow("oneline/cr") << QByteArray("ole\r") << (QStringList() << "ole"); - if (!for_QString) - QTest::newRow("utf16-BE/cr") << QByteArray("\xfe\xff\x00\xe5\x00\x67\x00\x65\x00\x0d", 10) << (QStringList() << QLatin1String("\345ge")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromDevice_data() -{ - generateLineData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromDevice() -{ - QFETCH(QByteArray, data); - QFETCH(QStringList, lines); - - QFile::remove(testFileName); - QFile file(testFileName); - QVERIFY(file.open(QFile::ReadWrite)); - QCOMPARE(file.write(data), qlonglong(data.size())); - QVERIFY(file.flush()); - file.seek(0); - - QTextStream stream(&file); - QStringList list; - while (!stream.atEnd()) - list << stream.readLine(); - - QCOMPARE(list, lines); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineMaxlen_data() -{ - QTest::addColumn("input"); - QTest::addColumn("lines"); - - QTest::newRow("Hey") - << QString("Hey") - << (QStringList() << QString("Hey") << QString("")); - QTest::newRow("Hey\\n") - << QString("Hey\n") - << (QStringList() << QString("Hey") << QString("")); - QTest::newRow("HelloWorld") - << QString("HelloWorld") - << (QStringList() << QString("Hello") << QString("World")); - QTest::newRow("Helo\\nWorlds") - << QString("Helo\nWorlds") - << (QStringList() << QString("Helo") << QString("World")); - QTest::newRow("AAAAA etc.") - << QString(16385, QLatin1Char('A')) - << (QStringList() << QString("AAAAA") << QString("AAAAA")); - QTest::newRow("multibyte string") - << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242\341\233\232\341\232\240\n") - << (QStringList() << QString::fromUtf8("\341\233\222\341\233\226\341\232\251\341\232\271\341\232\242") - << QString::fromUtf8("\341\233\232\341\232\240")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineMaxlen() -{ - QFETCH(QString, input); - QFETCH(QStringList, lines); - for (int i = 0; i < 2; ++i) { - bool useDevice = (i == 1); - QTextStream stream; - QFile::remove("testfile"); - QFile file("testfile"); - if (useDevice) { - file.open(QIODevice::ReadWrite); - file.write(input.toUtf8()); - file.seek(0); - stream.setDevice(&file); - stream.setCodec("utf-8"); - } else { - stream.setString(&input); - } - - QStringList list; - list << stream.readLine(5); - list << stream.readLine(5); - - QCOMPARE(list, lines); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLinesFromBufferCRCR() -{ - QBuffer buffer; - buffer.open(QIODevice::WriteOnly); - QByteArray data("0123456789\r\r\n"); - - for (int i = 0; i < 10000; ++i) - buffer.write(data); - - buffer.close(); - if (buffer.open(QIODevice::ReadOnly|QIODevice::Text)) { - QTextStream stream(&buffer); - while (!stream.atEnd()) - QCOMPARE(stream.readLine(), QString("0123456789")); - } -} - -class ErrorDevice : public QIODevice -{ -protected: - qint64 readData(char *data, qint64 maxlen) override - { - Q_UNUSED(data) - Q_UNUSED(maxlen) - return -1; - } - - qint64 writeData(const char *data, qint64 len) override - { - Q_UNUSED(data) - Q_UNUSED(len) - return -1; - } -}; - -void tst_QTextStream::readLineInto() -{ - QByteArray data = "1\n2\n3"; - - QTextStream ts(&data); - QString line; - - ts.readLineInto(&line); - QCOMPARE(line, QStringLiteral("1")); - - ts.readLineInto(nullptr, 0); // read the second line, but don't store it - - ts.readLineInto(&line); - QCOMPARE(line, QStringLiteral("3")); - - QVERIFY(!ts.readLineInto(&line)); - QVERIFY(line.isEmpty()); - - QFile file(m_rfc3261FilePath); - QVERIFY(file.open(QFile::ReadOnly)); - - ts.setDevice(&file); - line.reserve(1); - int maxLineCapacity = line.capacity(); - - while (ts.readLineInto(&line)) { - QVERIFY(line.capacity() >= maxLineCapacity); - maxLineCapacity = line.capacity(); - } - - line = "Test string"; - ErrorDevice errorDevice; - QVERIFY(errorDevice.open(QIODevice::ReadOnly)); - ts.setDevice(&errorDevice); - - QVERIFY(!ts.readLineInto(&line)); - QVERIFY(line.isEmpty()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromString_data() -{ - generateLineData(true); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromString() -{ - QFETCH(QByteArray, data); - QFETCH(QStringList, lines); - - QString dataString = data; - - QTextStream stream(&dataString, QIODevice::ReadOnly); - QStringList list; - while (!stream.atEnd()) - list << stream.readLine(); - - QCOMPARE(list, lines); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromStringThenChangeString() -{ - QString first = "First string"; - QString second = "Second string"; - - QTextStream stream(&first, QIODevice::ReadOnly); - QString result = stream.readLine(); - QCOMPARE(first, result); - - stream.setString(&second, QIODevice::ReadOnly); - result = stream.readLine(); - QCOMPARE(second, result); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::setDevice() -{ - // Check that the read buffer is reset after setting a new device - QByteArray data1("Hello World"); - QByteArray data2("How are you"); - - QBuffer bufferOld(&data1); - bufferOld.open(QIODevice::ReadOnly); - - QBuffer bufferNew(&data2); - bufferNew.open(QIODevice::ReadOnly); - - QString text; - QTextStream stream(&bufferOld); - stream >> text; - QCOMPARE(text, QString("Hello")); - - stream.setDevice(&bufferNew); - stream >> text; - QCOMPARE(text, QString("How")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromTextDevice_data() -{ - generateLineData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromTextDevice() -{ - QFETCH(QByteArray, data); - QFETCH(QStringList, lines); - - for (int i = 0; i < 8; ++i) { - QBuffer buffer(&data); - if (i < 4) - QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text)); - else - QVERIFY(buffer.open(QIODevice::ReadOnly)); - - QTextStream stream(&buffer); - QStringList list; - while (!stream.atEnd()) { - stream.pos(); // <- triggers side effects - QString line; - - if (i & 1) { - QChar c; - while (!stream.atEnd()) { - stream >> c; - if (stream.status() == QTextStream::Ok) { - if (c != QLatin1Char('\n') && c != QLatin1Char('\r')) - line += c; - if (c == QLatin1Char('\n')) - break; - } - } - } else { - line = stream.readLine(); - } - - if ((i & 3) == 3 && !QString(QTest::currentDataTag()).contains("utf16")) - stream.seek(stream.pos()); - list << line; - } - QCOMPARE(list, lines); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::generateAllData(bool for_QString) -{ - QTest::addColumn("input"); - QTest::addColumn("output"); - - // latin-1 - QTest::newRow("empty") << QByteArray() << QString(); - QTest::newRow("latin1-a") << QByteArray("a") << QString("a"); - QTest::newRow("latin1-a\\r") << QByteArray("a\r") << QString("a\r"); - QTest::newRow("latin1-a\\r\\n") << QByteArray("a\r\n") << QString("a\r\n"); - QTest::newRow("latin1-a\\n") << QByteArray("a\n") << QString("a\n"); - - // utf-16 - if (!for_QString) { - // one line - QTest::newRow("utf16-BE/nothing") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65", 8) << QString::fromLatin1("\345ge"); - QTest::newRow("utf16-LE/nothing") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00", 8) << QString::fromLatin1("\345ge"); - QTest::newRow("utf16-BE/lf") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0a", 10) << QString::fromLatin1("\345ge\n"); - QTest::newRow("utf16-LE/lf") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0a\x00", 10) << QString::fromLatin1("\345ge\n"); - QTest::newRow("utf16-BE/crlf") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a", 12) << QString::fromLatin1("\345ge\r\n"); - QTest::newRow("utf16-LE/crlf") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0d\x00\x0a\x00", 12) << QString::fromLatin1("\345ge\r\n"); - - // two lines - QTest::newRow("utf16-BE/twolines") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0a" - "\x00\xe5\x00\x67\x00\x65\x00\x0a", 18) - << QString::fromLatin1("\345ge\n\345ge\n"); - QTest::newRow("utf16-LE/twolines") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0a\x00" - "\xe5\x00\x67\x00\x65\x00\x0a\x00", 18) - << QString::fromLatin1("\345ge\n\345ge\n"); - - // three lines - QTest::newRow("utf16-BE/threelines") - << QByteArray("\xfe\xff" - "\x00\xe5\x00\x67\x00\x65\x00\x0a" - "\x00\xe5\x00\x67\x00\x65\x00\x0a" - "\x00\xe5\x00\x67\x00\x65\x00\x0a", 26) - << QString::fromLatin1("\345ge\n\345ge\n\345ge\n"); - QTest::newRow("utf16-LE/threelines") - << QByteArray("\xff\xfe" - "\xe5\x00\x67\x00\x65\x00\x0a\x00" - "\xe5\x00\x67\x00\x65\x00\x0a\x00" - "\xe5\x00\x67\x00\x65\x00\x0a\x00", 26) - << QString::fromLatin1("\345ge\n\345ge\n\345ge\n"); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineUntilNull() -{ - QFile file(m_rfc3261FilePath); - QVERIFY(file.open(QFile::ReadOnly)); - - QTextStream stream(&file); - for (int i = 0; i < 15066; ++i) { - QString line = stream.readLine(); - QVERIFY(!line.isNull()); - QVERIFY(!line.isNull()); - } - QVERIFY(!stream.readLine().isNull()); - QVERIFY(stream.readLine().isNull()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readAllFromDevice_data() -{ - generateAllData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readAllFromDevice() -{ - QFETCH(QByteArray, input); - QFETCH(QString, output); - - QBuffer buffer(&input); - buffer.open(QBuffer::ReadOnly); - - QTextStream stream(&buffer); - QCOMPARE(stream.readAll(), output); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readAllFromString_data() -{ - generateAllData(true); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readAllFromString() -{ - QFETCH(QByteArray, input); - QFETCH(QString, output); - - QString str = input; - - QTextStream stream(&str); - QCOMPARE(stream.readAll(), output); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::skipWhiteSpace_data() -{ - QTest::addColumn("input"); - QTest::addColumn("output"); - - // latin1 - QTest::newRow("empty") << QByteArray() << QChar('\0'); - QTest::newRow(" one") << QByteArray(" one") << QChar('o'); - QTest::newRow("\\none") << QByteArray("\none") << QChar('o'); - QTest::newRow("\\n one") << QByteArray("\n one") << QChar('o'); - QTest::newRow(" \\r\\n one") << QByteArray(" \r\n one") << QChar('o'); - - // utf-16 - QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0'); - QTest::newRow("utf16-BE ( one)") << QByteArray("\xfe\xff\x00 \x00o\x00n\x00e", 10) << QChar('o'); - QTest::newRow("utf16-BE (\\none)") << QByteArray("\xfe\xff\x00\n\x00o\x00n\x00e", 10) << QChar('o'); - QTest::newRow("utf16-BE (\\n one)") << QByteArray("\xfe\xff\x00\n\x00 \x00o\x00n\x00e", 12) << QChar('o'); - QTest::newRow("utf16-BE ( \\r\\n one)") << QByteArray("\xfe\xff\x00 \x00\r\x00\n\x00 \x00o\x00n\x00e", 16) << QChar('o'); - - QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0'); - QTest::newRow("utf16-LE ( one)") << QByteArray("\xff\xfe \x00o\x00n\x00e\x00", 10) << QChar('o'); - QTest::newRow("utf16-LE (\\none)") << QByteArray("\xff\xfe\n\x00o\x00n\x00e\x00", 10) << QChar('o'); - QTest::newRow("utf16-LE (\\n one)") << QByteArray("\xff\xfe\n\x00 \x00o\x00n\x00e\x00", 12) << QChar('o'); - QTest::newRow("utf16-LE ( \\r\\n one)") << QByteArray("\xff\xfe \x00\r\x00\n\x00 \x00o\x00n\x00e\x00", 16) << QChar('o'); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::skipWhiteSpace() -{ - QFETCH(QByteArray, input); - QFETCH(QChar, output); - - QBuffer buffer(&input); - buffer.open(QBuffer::ReadOnly); - - QTextStream stream(&buffer); - stream.skipWhiteSpace(); - - QChar tmp; - stream >> tmp; - - QCOMPARE(tmp, output); - - QString str = input; - QTextStream stream2(&input); - stream2.skipWhiteSpace(); - - stream2 >> tmp; - - QCOMPARE(tmp, output); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::lineCount_data() -{ - QTest::addColumn("data"); - QTest::addColumn("lineCount"); - - QTest::newRow("empty") << QByteArray() << 0; - QTest::newRow("oneline") << QByteArray("a\n") << 1; - QTest::newRow("twolines") << QByteArray("a\nb\n") << 2; - QTest::newRow("oneemptyline") << QByteArray("\n") << 1; - QTest::newRow("twoemptylines") << QByteArray("\n\n") << 2; - QTest::newRow("buffersize-1 line") << QByteArray(16382, '\n') << 16382; - QTest::newRow("buffersize line") << QByteArray(16383, '\n') << 16383; - QTest::newRow("buffersize+1 line") << QByteArray(16384, '\n') << 16384; - QTest::newRow("buffersize+2 line") << QByteArray(16385, '\n') << 16385; - - QFile file(m_rfc3261FilePath); file.open(QFile::ReadOnly); - QTest::newRow("rfc3261") << file.readAll() << 15067; -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::lineCount() -{ - QFETCH(QByteArray, data); - QFETCH(int, lineCount); - - QFile out("out.txt"); - out.open(QFile::WriteOnly); - - QTextStream lineReader(data); - int lines = 0; - while (!lineReader.atEnd()) { - QString line = lineReader.readLine(); - out.write(line.toLatin1() + "\n"); - ++lines; - } - - out.close(); - QCOMPARE(lines, lineCount); -} - -// ------------------------------------------------------------------------------ -struct CompareIndicesForArray -{ - int *array; - CompareIndicesForArray(int *array) : array(array) {} - bool operator() (const int i1, const int i2) - { - return array[i1] < array[i2]; - } -}; - -void tst_QTextStream::performance() -{ - // Phase #1 - test speed of reading a huge text file with QFile. - QTime stopWatch; - - const int N = 3; - const char * readMethods[N] = { - "QFile::readLine()", - "QTextStream::readLine()", - "QTextStream::readLine(QString *)" - }; - int elapsed[N] = {0, 0, 0}; - - stopWatch.restart(); - int nlines1 = 0; - QFile file(m_rfc3261FilePath); - QVERIFY(file.open(QFile::ReadOnly)); - - while (!file.atEnd()) { - ++nlines1; - file.readLine(); - } - - elapsed[0] = stopWatch.elapsed(); - stopWatch.restart(); - - int nlines2 = 0; - QFile file2(m_rfc3261FilePath); - QVERIFY(file2.open(QFile::ReadOnly)); - - QTextStream stream(&file2); - while (!stream.atEnd()) { - ++nlines2; - stream.readLine(); - } - - elapsed[1] = stopWatch.elapsed(); - stopWatch.restart(); - - int nlines3 = 0; - QFile file3(m_rfc3261FilePath); - QVERIFY(file3.open(QFile::ReadOnly)); - - QTextStream stream2(&file3); - QString line; - while (stream2.readLineInto(&line)) - ++nlines3; - - elapsed[2] = stopWatch.elapsed(); - - QCOMPARE(nlines1, nlines2); - QCOMPARE(nlines2, nlines3); - - for (int i = 0; i < N; i++) { - qDebug("%s used %.3f seconds to read the file", readMethods[i], - elapsed[i] / 1000.0); - } - - int idx[N] = {0, 1, 2}; - std::sort(idx, idx + N, CompareIndicesForArray(elapsed)); - - for (int i = 0; i < N-1; i++) { - int i1 = idx[i]; - int i2 = idx[i+1]; - qDebug("Reading by %s is %.2fx faster than by %s", - readMethods[i1], - double(elapsed[i2]) / double(elapsed[i1]), - readMethods[i2]); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::hexTest_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - - QTest::newRow("0") << Q_INT64_C(0) << QByteArray("0x0"); - QTest::newRow("1") << Q_INT64_C(1) << QByteArray("0x1"); - QTest::newRow("2") << Q_INT64_C(2) << QByteArray("0x2"); - QTest::newRow("3") << Q_INT64_C(3) << QByteArray("0x3"); - QTest::newRow("4") << Q_INT64_C(4) << QByteArray("0x4"); - QTest::newRow("5") << Q_INT64_C(5) << QByteArray("0x5"); - QTest::newRow("6") << Q_INT64_C(6) << QByteArray("0x6"); - QTest::newRow("7") << Q_INT64_C(7) << QByteArray("0x7"); - QTest::newRow("8") << Q_INT64_C(8) << QByteArray("0x8"); - QTest::newRow("9") << Q_INT64_C(9) << QByteArray("0x9"); - QTest::newRow("a") << Q_INT64_C(0xa) << QByteArray("0xa"); - QTest::newRow("b") << Q_INT64_C(0xb) << QByteArray("0xb"); - QTest::newRow("c") << Q_INT64_C(0xc) << QByteArray("0xc"); - QTest::newRow("d") << Q_INT64_C(0xd) << QByteArray("0xd"); - QTest::newRow("e") << Q_INT64_C(0xe) << QByteArray("0xe"); - QTest::newRow("f") << Q_INT64_C(0xf) << QByteArray("0xf"); - QTest::newRow("-1") << Q_INT64_C(-1) << QByteArray("-0x1"); - QTest::newRow("0xffffffff") << Q_INT64_C(0xffffffff) << QByteArray("0xffffffff"); - QTest::newRow("0xfffffffffffffffe") << Q_INT64_C(0xfffffffffffffffe) << QByteArray("-0x2"); - QTest::newRow("0xffffffffffffffff") << Q_INT64_C(0xffffffffffffffff) << QByteArray("-0x1"); - QTest::newRow("0x7fffffffffffffff") << Q_INT64_C(0x7fffffffffffffff) << QByteArray("0x7fffffffffffffff"); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::hexTest() -{ - QFETCH(qlonglong, number); - QFETCH(QByteArray, data); - - QByteArray array; - QTextStream stream(&array); - - stream << showbase << hex << number; - stream.flush(); - QCOMPARE(array, data); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::binTest_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - - QTest::newRow("0") << 0 << QByteArray("0b0"); - QTest::newRow("1") << 1 << QByteArray("0b1"); - QTest::newRow("2") << 2 << QByteArray("0b10"); - QTest::newRow("5") << 5 << QByteArray("0b101"); - QTest::newRow("-1") << -1 << QByteArray("-0b1"); - QTest::newRow("11111111") << 0xff << QByteArray("0b11111111"); - QTest::newRow("1111111111111111") << 0xffff << QByteArray("0b1111111111111111"); - QTest::newRow("1111111011111110") << 0xfefe << QByteArray("0b1111111011111110"); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::binTest() -{ - QFETCH(int, number); - QFETCH(QByteArray, data); - - QByteArray array; - QTextStream stream(&array); - - stream << showbase << bin << number; - stream.flush(); - QCOMPARE(array.constData(), data.constData()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::octTest_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - - QTest::newRow("0") << 0 << QByteArray("00"); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::octTest() -{ - QFETCH(int, number); - QFETCH(QByteArray, data); - - QByteArray array; - QTextStream stream(&array); - - stream << showbase << oct << number; - stream.flush(); - QCOMPARE(array, data); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::zeroTermination() -{ - QTextStream stream; - char c = '@'; - - QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device"); - stream >> c; - QCOMPARE(c, '\0'); - - c = '@'; - - QTest::ignoreMessage(QtWarningMsg, "QTextStream: No device"); - stream >> &c; - QCOMPARE(c, '\0'); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::ws_manipulator() -{ - { - QString string = "a b c d"; - QTextStream stream(&string); - - char a, b, c, d; - stream >> a >> b >> c >> d; - QCOMPARE(a, 'a'); - QCOMPARE(b, ' '); - QCOMPARE(c, 'b'); - QCOMPARE(d, ' '); - } - { - QString string = "a b c d"; - QTextStream stream(&string); - - char a, b, c, d; - stream >> a >> ws >> b >> ws >> c >> ws >> d; - QCOMPARE(a, 'a'); - QCOMPARE(b, 'b'); - QCOMPARE(c, 'c'); - QCOMPARE(d, 'd'); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::stillOpenWhenAtEnd() -{ - QFile file(QFINDTESTDATA("tst_qtextstream.cpp")); - QVERIFY(file.open(QFile::ReadOnly)); - - QTextStream stream(&file); - while (!stream.readLine().isNull()) {} - QVERIFY(file.isOpen()); - - if (!QtNetworkSettings::verifyTestNetworkSettings()) - QSKIP("No network test server available"); - - QTcpSocket socket; - socket.connectToHost(QtNetworkSettings::serverName(), 143); - QVERIFY(socket.waitForReadyRead(5000)); - - QTextStream stream2(&socket); - while (!stream2.readLine().isNull()) {} - QVERIFY(socket.isOpen()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readNewlines_data() -{ - QTest::addColumn("input"); - QTest::addColumn("output"); - - QTest::newRow("empty") << QByteArray() << QString(); - QTest::newRow("\\r\\n") << QByteArray("\r\n") << QString("\n"); - QTest::newRow("\\r\\r\\n") << QByteArray("\r\r\n") << QString("\n"); - QTest::newRow("\\r\\n\\r\\n") << QByteArray("\r\n\r\n") << QString("\n\n"); - QTest::newRow("\\n") << QByteArray("\n") << QString("\n"); - QTest::newRow("\\n\\n") << QByteArray("\n\n") << QString("\n\n"); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readNewlines() -{ - QFETCH(QByteArray, input); - QFETCH(QString, output); - - QBuffer buffer(&input); - buffer.open(QBuffer::ReadOnly | QBuffer::Text); - QTextStream stream(&buffer); - QCOMPARE(stream.readAll(), output); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::seek() -{ - QFile file(m_rfc3261FilePath); - QVERIFY(file.open(QFile::ReadOnly)); - - QTextStream stream(&file); - QString tmp; - stream >> tmp; - QCOMPARE(tmp, QString::fromLatin1("Network")); - - // QTextStream::seek(0) should both clear its internal read/write buffers - // and seek the device. - for (int i = 0; i < 4; ++i) { - stream.seek(12 + i); - stream >> tmp; - QCOMPARE(tmp, QString("Network").mid(i)); - } - for (int i = 0; i < 4; ++i) { - stream.seek(16 - i); - stream >> tmp; - QCOMPARE(tmp, QString("Network").mid(4 - i)); - } - stream.seek(139181); - stream >> tmp; - QCOMPARE(tmp, QString("information")); - stream.seek(388683); - stream >> tmp; - QCOMPARE(tmp, QString("telephone")); - - // Also test this with a string - QString words = QLatin1String("thisisa"); - QTextStream stream2(&words, QIODevice::ReadOnly); - stream2 >> tmp; - QCOMPARE(tmp, QString::fromLatin1("thisisa")); - - for (int i = 0; i < 4; ++i) { - stream2.seek(i); - stream2 >> tmp; - QCOMPARE(tmp, QString("thisisa").mid(i)); - } - for (int i = 0; i < 4; ++i) { - stream2.seek(4 - i); - stream2 >> tmp; - QCOMPARE(tmp, QString("thisisa").mid(4 - i)); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::pos() -{ - { - // Strings - QString str("this is a test"); - QTextStream stream(&str, QIODevice::ReadWrite); - - QCOMPARE(stream.pos(), qint64(0)); - for (int i = 0; i <= str.size(); ++i) { - QVERIFY(stream.seek(i)); - QCOMPARE(stream.pos(), qint64(i)); - } - for (int j = str.size(); j >= 0; --j) { - QVERIFY(stream.seek(j)); - QCOMPARE(stream.pos(), qint64(j)); - } - - QVERIFY(stream.seek(0)); - - QChar ch; - stream >> ch; - QCOMPARE(ch, QChar('t')); - - QCOMPARE(stream.pos(), qint64(1)); - QVERIFY(stream.seek(1)); - QCOMPARE(stream.pos(), qint64(1)); - QVERIFY(stream.seek(0)); - - QString strtmp; - stream >> strtmp; - QCOMPARE(strtmp, QString("this")); - - QCOMPARE(stream.pos(), qint64(4)); - stream.seek(0); - stream.seek(4); - - stream >> ch; - QCOMPARE(ch, QChar(' ')); - QCOMPARE(stream.pos(), qint64(5)); - - stream.seek(10); - stream >> strtmp; - QCOMPARE(strtmp, QString("test")); - QCOMPARE(stream.pos(), qint64(14)); - } - { - // Latin1 device - QFile file(m_rfc3261FilePath); - QVERIFY(file.open(QIODevice::ReadOnly)); - - QTextStream stream(&file); - - QCOMPARE(stream.pos(), qint64(0)); - - for (int i = 0; i <= file.size(); i += 7) { - QVERIFY(stream.seek(i)); - QCOMPARE(stream.pos(), qint64(i)); - } - for (int j = file.size(); j >= 0; j -= 7) { - QVERIFY(stream.seek(j)); - QCOMPARE(stream.pos(), qint64(j)); - } - - stream.seek(0); - - QString strtmp; - stream >> strtmp; - QCOMPARE(strtmp, QString("Network")); - QCOMPARE(stream.pos(), qint64(19)); - - stream.seek(2598); - QCOMPARE(stream.pos(), qint64(2598)); - stream >> strtmp; - QCOMPARE(stream.pos(), qint64(2607)); - QCOMPARE(strtmp, QString("locations")); - } - { - // Shift-JIS device - for (int i = 0; i < 2; ++i) { - QFile file(m_shiftJisFilePath); - if (i == 0) - QVERIFY(file.open(QIODevice::ReadOnly)); - else - QVERIFY(file.open(QIODevice::ReadOnly | QIODevice::Text)); - - QTextStream stream(&file); - stream.setCodec("Shift-JIS"); - QVERIFY(stream.codec()); - - QCOMPARE(stream.pos(), qint64(0)); - for (int i = 0; i <= file.size(); i += 7) { - QVERIFY(stream.seek(i)); - QCOMPARE(stream.pos(), qint64(i)); - } - for (int j = file.size(); j >= 0; j -= 7) { - QVERIFY(stream.seek(j)); - QCOMPARE(stream.pos(), qint64(j)); - } - - stream.seek(2089); - QString strtmp; - stream >> strtmp; - QCOMPARE(strtmp, QString("AUnicode")); - QCOMPARE(stream.pos(), qint64(2097)); - - stream.seek(43325); - stream >> strtmp; - QCOMPARE(strtmp, QString("Shift-JIS")); - stream >> strtmp; - QCOMPARE(strtmp, QString::fromUtf8("\343\201\247\346\233\270\343\201\213\343\202\214\343\201\237")); - QCOMPARE(stream.pos(), qint64(43345)); - stream >> strtmp; - QCOMPARE(strtmp, QString("POD")); - QCOMPARE(stream.pos(), qint64(43349)); - } - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::pos2() -{ - QByteArray data("abcdef\r\nghijkl\r\n"); - QBuffer buffer(&data); - QVERIFY(buffer.open(QIODevice::ReadOnly | QIODevice::Text)); - - QTextStream stream(&buffer); - - QChar ch; - - QCOMPARE(stream.pos(), qint64(0)); - stream >> ch; - QCOMPARE(ch, QChar('a')); - QCOMPARE(stream.pos(), qint64(1)); - - QString str; - stream >> str; - QCOMPARE(str, QString("bcdef")); - QCOMPARE(stream.pos(), qint64(6)); - - stream >> str; - QCOMPARE(str, QString("ghijkl")); - QCOMPARE(stream.pos(), qint64(14)); - - // Seek back and try again - stream.seek(1); - QCOMPARE(stream.pos(), qint64(1)); - stream >> str; - QCOMPARE(str, QString("bcdef")); - QCOMPARE(stream.pos(), qint64(6)); - - stream.seek(6); - stream >> str; - QCOMPARE(str, QString("ghijkl")); - QCOMPARE(stream.pos(), qint64(14)); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::pos3LargeFile() -{ - { - QFile file(testFileName); - file.open(QIODevice::WriteOnly | QIODevice::Text); - QTextStream out( &file ); - // NOTE: The unusual spacing is to ensure non-1-character whitespace. - QString lineString = " 0 1 2\t3 4\t \t5 6 7 8 9 \n"; - // Approximate 50kb text file - const int NbLines = (50*1024) / lineString.length() + 1; - for (int line = 0; line < NbLines; ++line) - out << lineString; - // File is automatically flushed and closed on destruction. - } - QFile file(testFileName); - file.open(QIODevice::ReadOnly | QIODevice::Text); - QTextStream in( &file ); - const int testValues[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; - int value; - while (true) { - in.pos(); - for ( int i = 0; i < 10; ++i ) { - in >> value; - if (in.status() != QTextStream::Ok) { - // End case, i == 0 && eof reached. - QCOMPARE(i, 0); - QCOMPARE(in.status(), QTextStream::ReadPastEnd); - return; - } - QCOMPARE(value, testValues[i]); - } - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readStdin() -{ -#if !QT_CONFIG(process) - QSKIP("No qprocess support", SkipAll); -#else - QProcess stdinProcess; - stdinProcess.start("stdinProcess/stdinProcess"); - stdinProcess.setReadChannel(QProcess::StandardError); - - QTextStream stream(&stdinProcess); - stream << "1" << endl; - stream << "2" << endl; - stream << "3" << endl; - - stdinProcess.closeWriteChannel(); - - QVERIFY(stdinProcess.waitForFinished(5000)); - - int a, b, c; - stream >> a >> b >> c; - QCOMPARE(a, 1); - QCOMPARE(b, 2); - QCOMPARE(c, 3); -#endif -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readAllFromStdin() -{ -#if !QT_CONFIG(process) - QSKIP("No qprocess support", SkipAll); -#else - QProcess stdinProcess; - stdinProcess.start("readAllStdinProcess/readAllStdinProcess", QIODevice::ReadWrite | QIODevice::Text); - stdinProcess.setReadChannel(QProcess::StandardError); - - QTextStream stream(&stdinProcess); - stream.setCodec("ISO-8859-1"); - stream << "hello world" << flush; - - stdinProcess.closeWriteChannel(); - - QVERIFY(stdinProcess.waitForFinished(5000)); - QCOMPARE(stream.readAll(), QString::fromLatin1("hello world\n")); -#endif -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::readLineFromStdin() -{ -#if !QT_CONFIG(process) - QSKIP("No qprocess support", SkipAll); -#else - QProcess stdinProcess; - stdinProcess.start("readLineStdinProcess/readLineStdinProcess", QIODevice::ReadWrite | QIODevice::Text); - stdinProcess.setReadChannel(QProcess::StandardError); - - stdinProcess.write("abc\n"); - QVERIFY(stdinProcess.waitForReadyRead(5000)); - QCOMPARE(stdinProcess.readAll().data(), QByteArray("abc").data()); - - stdinProcess.write("def\n"); - QVERIFY(stdinProcess.waitForReadyRead(5000)); - QCOMPARE(stdinProcess.readAll(), QByteArray("def")); - - stdinProcess.closeWriteChannel(); - - QVERIFY(stdinProcess.waitForFinished(5000)); -#endif -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::read() -{ - { - QFile::remove("testfile"); - QFile file("testfile"); - file.open(QFile::WriteOnly); - file.write("4.15 abc ole"); - file.close(); - - QVERIFY(file.open(QFile::ReadOnly)); - QTextStream stream(&file); - QCOMPARE(stream.read(0), QString("")); - QCOMPARE(stream.read(4), QString("4.15")); - QCOMPARE(stream.read(4), QString(" abc")); - stream.seek(1); - QCOMPARE(stream.read(4), QString(".15 ")); - stream.seek(1); - QCOMPARE(stream.read(4), QString(".15 ")); - stream.seek(2); - QCOMPARE(stream.read(4), QString("15 a")); - // ### add tests for reading \r\n etc.. - } - - { - // File larger than QTEXTSTREAM_BUFFERSIZE - QFile::remove("testfile"); - QFile file("testfile"); - file.open(QFile::WriteOnly); - for (int i = 0; i < 16384 / 8; ++i) - file.write("01234567"); - file.write("0"); - file.close(); - - QVERIFY(file.open(QFile::ReadOnly)); - QTextStream stream(&file); - QCOMPARE(stream.read(10), QString("0123456701")); - QCOMPARE(stream.read(10), QString("2345670123")); - QCOMPARE(stream.readAll().size(), 16385-20); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::qbool() -{ - QString s; - QTextStream stream(&s); - stream << s.contains(QString("hei")); - QCOMPARE(s, QString("0")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::forcePoint() -{ - QString str; - QTextStream stream(&str); - stream << fixed << forcepoint << 1.0 << ' ' << 1 << ' ' << 0 << ' ' << -1.0 << ' ' << -1; - QCOMPARE(str, QString("1.000000 1 0 -1.000000 -1")); - - str.clear(); - stream.seek(0); - stream << scientific << forcepoint << 1.0 << ' ' << 1 << ' ' << 0 << ' ' << -1.0 << ' ' << -1; - QCOMPARE(str, QString("1.000000e+00 1 0 -1.000000e+00 -1")); - - str.clear(); - stream.seek(0); - stream.setRealNumberNotation(QTextStream::SmartNotation); - stream << forcepoint << 1.0 << ' ' << 1 << ' ' << 0 << ' ' << -1.0 << ' ' << -1; - QCOMPARE(str, QString("1.00000 1 0 -1.00000 -1")); - -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::forceSign() -{ - QString str; - QTextStream stream(&str); - stream << forcesign << 1.2 << ' ' << -1.2 << ' ' << 0; - QCOMPARE(str, QString("+1.2 -1.2 +0")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::read0d0d0a() -{ - QFile file("task113817.txt"); - file.open(QIODevice::ReadOnly | QIODevice::Text); - - QTextStream stream(&file); - while (!stream.atEnd()) - stream.readLine(); -} - -// ------------------------------------------------------------------------------ - -Q_DECLARE_METATYPE(QTextStreamFunction); - -QTextStream &noop(QTextStream &s) { return s; } - -void tst_QTextStream::numeralCase_data() -{ - QTextStreamFunction noop_ = noop; - QTextStreamFunction bin_ = bin; - QTextStreamFunction oct_ = oct; - QTextStreamFunction hex_ = hex; - QTextStreamFunction base = showbase; - QTextStreamFunction ucb = uppercasebase; - QTextStreamFunction lcb = lowercasebase; - QTextStreamFunction ucd = uppercasedigits; - QTextStreamFunction lcd = lowercasedigits; - - QTest::addColumn("func1"); - QTest::addColumn("func2"); - QTest::addColumn("func3"); - QTest::addColumn("func4"); - QTest::addColumn("value"); - QTest::addColumn("expected"); - QTest::newRow("dec 1") << noop_ << noop_ << noop_ << noop_ << 31 << "31"; - QTest::newRow("dec 2") << noop_ << base << noop_ << noop_ << 31 << "31"; - - QTest::newRow("hex 1") << hex_ << noop_ << noop_ << noop_ << 31 << "1f"; - QTest::newRow("hex 2") << hex_ << noop_ << noop_ << lcd << 31 << "1f"; - QTest::newRow("hex 3") << hex_ << noop_ << ucb << noop_ << 31 << "1f"; - QTest::newRow("hex 4") << hex_ << noop_ << noop_ << ucd << 31 << "1F"; - QTest::newRow("hex 5") << hex_ << noop_ << lcb << ucd << 31 << "1F"; - QTest::newRow("hex 6") << hex_ << noop_ << ucb << ucd << 31 << "1F"; - QTest::newRow("hex 7") << hex_ << base << noop_ << noop_ << 31 << "0x1f"; - QTest::newRow("hex 8") << hex_ << base << lcb << lcd << 31 << "0x1f"; - QTest::newRow("hex 9") << hex_ << base << ucb << noop_ << 31 << "0X1f"; - QTest::newRow("hex 10") << hex_ << base << ucb << lcd << 31 << "0X1f"; - QTest::newRow("hex 11") << hex_ << base << noop_ << ucd << 31 << "0x1F"; - QTest::newRow("hex 12") << hex_ << base << lcb << ucd << 31 << "0x1F"; - QTest::newRow("hex 13") << hex_ << base << ucb << ucd << 31 << "0X1F"; - - QTest::newRow("bin 1") << bin_ << noop_ << noop_ << noop_ << 31 << "11111"; - QTest::newRow("bin 2") << bin_ << base << noop_ << noop_ << 31 << "0b11111"; - QTest::newRow("bin 3") << bin_ << base << lcb << noop_ << 31 << "0b11111"; - QTest::newRow("bin 4") << bin_ << base << ucb << noop_ << 31 << "0B11111"; - QTest::newRow("bin 5") << bin_ << base << noop_ << ucd << 31 << "0b11111"; - QTest::newRow("bin 6") << bin_ << base << lcb << ucd << 31 << "0b11111"; - QTest::newRow("bin 7") << bin_ << base << ucb << ucd << 31 << "0B11111"; - - QTest::newRow("oct 1") << oct_ << noop_ << noop_ << noop_ << 31 << "37"; - QTest::newRow("oct 2") << oct_ << base << noop_ << noop_ << 31 << "037"; -} - -void tst_QTextStream::numeralCase() -{ - QFETCH(QTextStreamFunction, func1); - QFETCH(QTextStreamFunction, func2); - QFETCH(QTextStreamFunction, func3); - QFETCH(QTextStreamFunction, func4); - QFETCH(int, value); - QFETCH(QString, expected); - - QString str; - QTextStream stream(&str); - stream << func1 << func2 << func3 << func4 << value; - QCOMPARE(str, expected); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::nanInf() -{ - // Cannot use test data in this function, as comparing nans and infs isn't - // well defined. - QString str("nan NAN nAn +nan +NAN +nAn -nan -NAN -nAn" - " inf INF iNf +inf +INF +iNf -inf -INF -iNf"); - - QTextStream stream(&str); - - double tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsNaN(tmpD)); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD > 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0; - stream >> tmpD; QVERIFY(qIsInf(tmpD)); QVERIFY(tmpD < 0); tmpD = 0; - - stream.seek(0); - - float tmpF = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsNaN(tmpF)); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF > 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); tmpD = 0; - stream >> tmpF; QVERIFY(qIsInf(tmpF)); QVERIFY(tmpF < 0); - - QString s; - QTextStream out(&s); - out << qInf() << ' ' << -qInf() << ' ' << qQNaN() - << uppercasedigits << ' ' - << qInf() << ' ' << -qInf() << ' ' << qQNaN() - << flush; - - QCOMPARE(s, QString("inf -inf nan INF -INF NAN")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::utf8IncompleteAtBufferBoundary_data() -{ - QTest::addColumn("useLocale"); - - QTest::newRow("utf8") << false; - - // is this locale UTF-8? - if (QString(QChar::ReplacementCharacter).toLocal8Bit() == "\xef\xbf\xbd") - QTest::newRow("locale") << true; -} - -void tst_QTextStream::utf8IncompleteAtBufferBoundary() -{ - QFile::remove(testFileName); - QFile data(testFileName); - - QTextCodec *utf8Codec = QTextCodec::codecForMib(106); - QString lineContents = QString::fromUtf8("\342\200\223" // U+2013 EN DASH - "\342\200\223" - "\342\200\223" - "\342\200\223" - "\342\200\223" - "\342\200\223"); - - data.open(QFile::WriteOnly | QFile::Truncate); - { - QTextStream out(&data); - out.setCodec(utf8Codec); - out.setFieldWidth(3); - - for (int i = 0; i < 1000; ++i) { - out << i << lineContents << endl; - } - } - data.close(); - - data.open(QFile::ReadOnly); - QTextStream in(&data); - - QFETCH(bool, useLocale); - if (!useLocale) - in.setCodec(utf8Codec); // QUtf8Codec - else - in.setCodec(QTextCodec::codecForLocale()); - - int i = 0; - do { - QString line = in.readLine().trimmed(); - ++i; - QVERIFY2(line.endsWith(lineContents), QString("Line %1: %2").arg(i).arg(line).toLocal8Bit()); - } while (!in.atEnd()); -} - -// ------------------------------------------------------------------------------ - -// Make sure we don't write a BOM after seek()ing - -void tst_QTextStream::writeSeekWriteNoBOM() -{ - - //First with the default codec (normally either latin-1 or UTF-8) - - QBuffer out; - out.open(QIODevice::WriteOnly); - QTextStream stream(&out); - - int number = 0; - QString sizeStr = QLatin1String("Size=") - + QString::number(number).rightJustified(10, QLatin1Char('0')); - stream << sizeStr << endl; - stream << "Version=" << QString::number(14) << endl; - stream << "blah blah blah" << endl; - stream.flush(); - - QCOMPARE(out.buffer().constData(), "Size=0000000000\nVersion=14\nblah blah blah\n"); - - // Now overwrite the size header item - number = 42; - stream.seek(0); - sizeStr = QLatin1String("Size=") - + QString::number(number).rightJustified(10, QLatin1Char('0')); - stream << sizeStr << endl; - stream.flush(); - - // Check buffer is still OK - QCOMPARE(out.buffer().constData(), "Size=0000000042\nVersion=14\nblah blah blah\n"); - - - //Then UTF-16 - - QBuffer out16; - out16.open(QIODevice::WriteOnly); - QTextStream stream16(&out16); - stream16.setCodec("UTF-16"); - - stream16 << "one" << "two" << QLatin1String("three"); - stream16.flush(); - - // save that output - QByteArray first = out16.buffer(); - - stream16.seek(0); - stream16 << "one"; - stream16.flush(); - - QCOMPARE(out16.buffer(), first); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::generateOperatorCharData(bool for_QString) -{ - QTest::addColumn("input"); - QTest::addColumn("qchar_output"); - QTest::addColumn("char_output"); - QTest::addColumn("write_output"); - - QTest::newRow("empty") << QByteArray() << QChar('\0') << '\0' << QByteArray("\0", 1); - QTest::newRow("a") << QByteArray("a") << QChar('a') << 'a' << QByteArray("a"); - QTest::newRow("\\na") << QByteArray("\na") << QChar('\n') << '\n' << QByteArray("\n"); - QTest::newRow("\\0") << QByteArray("\0") << QChar('\0') << '\0' << QByteArray("\0", 1); - QTest::newRow("\\xff") << QByteArray("\xff") << QChar('\xff') << '\xff' << QByteArray("\xff"); - QTest::newRow("\\xfe") << QByteArray("\xfe") << QChar('\xfe') << '\xfe' << QByteArray("\xfe"); - - if (!for_QString) { - QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QChar('\0') << '\0' << QByteArray("\0", 1); - QTest::newRow("utf16-BE (a)") << QByteArray("\xff\xfe\x61\x00", 4) << QChar('a') << 'a' << QByteArray("a"); - QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QChar('\0') << '\0' << QByteArray("\0", 1); - QTest::newRow("utf16-LE (a)") << QByteArray("\xfe\xff\x00\x61", 4) << QChar('a') << 'a' << QByteArray("a"); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::QChar_operators_FromDevice_data() -{ - generateOperatorCharData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::QChar_operators_FromDevice() -{ - QFETCH(QByteArray, input); - QFETCH(QChar, qchar_output); - QFETCH(QByteArray, write_output); - - QBuffer buf(&input); - buf.open(QBuffer::ReadOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - QChar tmp; - stream >> tmp; - QCOMPARE(tmp, qchar_output); - - QBuffer writeBuf; - writeBuf.open(QBuffer::WriteOnly); - - QTextStream writeStream(&writeBuf); - writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - writeStream << qchar_output; - writeStream.flush(); - - QCOMPARE(writeBuf.buffer().size(), write_output.size()); - QCOMPARE(writeBuf.buffer().constData(), write_output.constData()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::char_operators_FromDevice_data() -{ - generateOperatorCharData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::char_operators_FromDevice() -{ - QFETCH(QByteArray, input); - QFETCH(char, char_output); - QFETCH(QByteArray, write_output); - - QBuffer buf(&input); - buf.open(QBuffer::ReadOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - char tmp; - stream >> tmp; - QCOMPARE(tmp, char_output); - - QBuffer writeBuf; - writeBuf.open(QBuffer::WriteOnly); - - QTextStream writeStream(&writeBuf); - writeStream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - writeStream << char_output; - writeStream.flush(); - - QCOMPARE(writeBuf.buffer().size(), write_output.size()); - QCOMPARE(writeBuf.buffer().constData(), write_output.constData()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::generateNaturalNumbersData(bool for_QString) -{ - QTest::addColumn("input"); - QTest::addColumn("output"); - - QTest::newRow("empty") << QByteArray() << qulonglong(0); - QTest::newRow("a") << QByteArray("a") << qulonglong(0); - QTest::newRow(" ") << QByteArray(" ") << qulonglong(0); - QTest::newRow("0") << QByteArray("0") << qulonglong(0); - QTest::newRow("1") << QByteArray("1") << qulonglong(1); - QTest::newRow("12") << QByteArray("12") << qulonglong(12); - QTest::newRow("-12") << QByteArray("-12") << qulonglong(-12); - QTest::newRow("-0") << QByteArray("-0") << qulonglong(0); - QTest::newRow(" 1") << QByteArray(" 1") << qulonglong(1); - QTest::newRow(" \\r\\n\\r\\n123") << QByteArray(" \r\n\r\n123") << qulonglong(123); - - // bit boundary tests - QTest::newRow("127") << QByteArray("127") << qulonglong(127); - QTest::newRow("128") << QByteArray("128") << qulonglong(128); - QTest::newRow("129") << QByteArray("129") << qulonglong(129); - QTest::newRow("-127") << QByteArray("-127") << qulonglong(-127); - QTest::newRow("-128") << QByteArray("-128") << qulonglong(-128); - QTest::newRow("-129") << QByteArray("-129") << qulonglong(-129); - QTest::newRow("32767") << QByteArray("32767") << qulonglong(32767); - QTest::newRow("32768") << QByteArray("32768") << qulonglong(32768); - QTest::newRow("32769") << QByteArray("32769") << qulonglong(32769); - QTest::newRow("-32767") << QByteArray("-32767") << qulonglong(-32767); - QTest::newRow("-32768") << QByteArray("-32768") << qulonglong(-32768); - QTest::newRow("-32769") << QByteArray("-32769") << qulonglong(-32769); - QTest::newRow("65537") << QByteArray("65537") << qulonglong(65537); - QTest::newRow("65536") << QByteArray("65536") << qulonglong(65536); - QTest::newRow("65535") << QByteArray("65535") << qulonglong(65535); - QTest::newRow("-65537") << QByteArray("-65537") << qulonglong(-65537); - QTest::newRow("-65536") << QByteArray("-65536") << qulonglong(-65536); - QTest::newRow("-65535") << QByteArray("-65535") << qulonglong(-65535); - QTest::newRow("2147483646") << QByteArray("2147483646") << qulonglong(2147483646); - QTest::newRow("2147483647") << QByteArray("2147483647") << qulonglong(2147483647); - QTest::newRow("2147483648") << QByteArray("2147483648") << Q_UINT64_C(2147483648); - QTest::newRow("-2147483646") << QByteArray("-2147483646") << qulonglong(-2147483646); - QTest::newRow("-2147483647") << QByteArray("-2147483647") << qulonglong(-2147483647); - QTest::newRow("-2147483648") << QByteArray("-2147483648") << quint64(-2147483648LL); - QTest::newRow("4294967296") << QByteArray("4294967296") << Q_UINT64_C(4294967296); - QTest::newRow("4294967297") << QByteArray("4294967297") << Q_UINT64_C(4294967297); - QTest::newRow("4294967298") << QByteArray("4294967298") << Q_UINT64_C(4294967298); - QTest::newRow("-4294967296") << QByteArray("-4294967296") << quint64(-4294967296); - QTest::newRow("-4294967297") << QByteArray("-4294967297") << quint64(-4294967297); - QTest::newRow("-4294967298") << QByteArray("-4294967298") << quint64(-4294967298); - QTest::newRow("9223372036854775807") << QByteArray("9223372036854775807") << Q_UINT64_C(9223372036854775807); - QTest::newRow("9223372036854775808") << QByteArray("9223372036854775808") << Q_UINT64_C(9223372036854775808); - QTest::newRow("9223372036854775809") << QByteArray("9223372036854775809") << Q_UINT64_C(9223372036854775809); - QTest::newRow("18446744073709551615") << QByteArray("18446744073709551615") << Q_UINT64_C(18446744073709551615); - QTest::newRow("18446744073709551616") << QByteArray("18446744073709551616") << Q_UINT64_C(0); - QTest::newRow("18446744073709551617") << QByteArray("18446744073709551617") << Q_UINT64_C(1); - // 18446744073709551617 bytes should be enough for anyone.... ;-) - - // hex tests - QTest::newRow("0x0") << QByteArray("0x0") << qulonglong(0); - QTest::newRow("0x") << QByteArray("0x") << qulonglong(0); - QTest::newRow("0x1") << QByteArray("0x1") << qulonglong(1); - QTest::newRow("0xf") << QByteArray("0xf") << qulonglong(15); - QTest::newRow("0xdeadbeef") << QByteArray("0xdeadbeef") << Q_UINT64_C(3735928559); - QTest::newRow("0XDEADBEEF") << QByteArray("0XDEADBEEF") << Q_UINT64_C(3735928559); - QTest::newRow("0xdeadbeefZzzzz") << QByteArray("0xdeadbeefZzzzz") << Q_UINT64_C(3735928559); - QTest::newRow(" 0xdeadbeefZzzzz") << QByteArray(" 0xdeadbeefZzzzz") << Q_UINT64_C(3735928559); - - // oct tests - QTest::newRow("00") << QByteArray("00") << qulonglong(0); - QTest::newRow("0141") << QByteArray("0141") << qulonglong(97); - QTest::newRow("01419999") << QByteArray("01419999") << qulonglong(97); - QTest::newRow(" 01419999") << QByteArray(" 01419999") << qulonglong(97); - - // bin tests - QTest::newRow("0b0") << QByteArray("0b0") << qulonglong(0); - QTest::newRow("0b1") << QByteArray("0b1") << qulonglong(1); - QTest::newRow("0b10") << QByteArray("0b10") << qulonglong(2); - QTest::newRow("0B10") << QByteArray("0B10") << qulonglong(2); - QTest::newRow("0b101010") << QByteArray("0b101010") << qulonglong(42); - QTest::newRow("0b1010102345") << QByteArray("0b1010102345") << qulonglong(42); - QTest::newRow(" 0b1010102345") << QByteArray(" 0b1010102345") << qulonglong(42); - - // utf-16 tests - if (!for_QString) { - QTest::newRow("utf16-BE (empty)") << QByteArray("\xfe\xff", 2) << qulonglong(0); - QTest::newRow("utf16-BE (0xdeadbeef)") - << QByteArray("\xfe\xff" - "\x00\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66", 22) - << Q_UINT64_C(3735928559); - QTest::newRow("utf16-LE (empty)") << QByteArray("\xff\xfe", 2) << Q_UINT64_C(0); - QTest::newRow("utf16-LE (0xdeadbeef)") - << QByteArray("\xff\xfe" - "\x30\x00\x78\x00\x64\x00\x65\x00\x61\x00\x64\x00\x62\x00\x65\x00\x65\x00\x66\x00", 22) - << Q_UINT64_C(3735928559); - } -} - -// ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \ - { generateNaturalNumbersData(false); } \ - void tst_QTextStream:: texttype##_read_operator_FromDevice() \ - { \ - QFETCH(QByteArray, input); \ - QFETCH(qulonglong, output); \ - type sh; \ - QTextStream stream(&input); \ - stream >> sh; \ - QCOMPARE(sh, (type)output); \ - } -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedShort, signed short) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedShort, unsigned short) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(signedInt, signed int) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(unsignedInt, unsigned int) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qlonglong, qlonglong) -IMPLEMENT_STREAM_RIGHT_INT_OPERATOR_TEST(qulonglong, qulonglong) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::generateRealNumbersData(bool for_QString) -{ - QTest::addColumn("input"); - QTest::addColumn("output"); - - QTest::newRow("empty") << QByteArray() << 0.0; - QTest::newRow("a") << QByteArray("a") << 0.0; - QTest::newRow("1.0") << QByteArray("1.0") << 1.0; - QTest::newRow(" 1") << QByteArray(" 1") << 1.0; - QTest::newRow(" \\r\\n1.2") << QByteArray(" \r\n1.2") << 1.2; - QTest::newRow("3.14") << QByteArray("3.14") << 3.14; - QTest::newRow("-3.14") << QByteArray("-3.14") << -3.14; - QTest::newRow(" -3.14") << QByteArray(" -3.14") << -3.14; - QTest::newRow("314e-02") << QByteArray("314e-02") << 3.14; - QTest::newRow("314E-02") << QByteArray("314E-02") << 3.14; - QTest::newRow("314e+02") << QByteArray("314e+02") << 31400.; - QTest::newRow("314E+02") << QByteArray("314E+02") << 31400.; - - // ### add numbers with exponents - - if (!for_QString) { - QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << 0.0; - QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << 0.0; - } -} - -// ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_read_operator_FromDevice_data() \ - { generateRealNumbersData(false); } \ - void tst_QTextStream:: texttype##_read_operator_FromDevice() \ - { \ - QFETCH(QByteArray, input); \ - QFETCH(double, output); \ - type sh; \ - QTextStream stream(&input); \ - stream >> sh; \ - QCOMPARE(sh, (type)output); \ - } -IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(float, float) -IMPLEMENT_STREAM_RIGHT_REAL_OPERATOR_TEST(double, double) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::generateStringData(bool for_QString) -{ - QTest::addColumn("input"); - QTest::addColumn("array_output"); - QTest::addColumn("string_output"); - - QTest::newRow("empty") << QByteArray() << QByteArray() << QString(); - QTest::newRow("a") << QByteArray("a") << QByteArray("a") << QString("a"); - QTest::newRow("a b") << QByteArray("a b") << QByteArray("a") << QString("a"); - QTest::newRow(" a b") << QByteArray(" a b") << QByteArray("a") << QString("a"); - QTest::newRow("a1") << QByteArray("a1") << QByteArray("a1") << QString("a1"); - QTest::newRow("a1 b1") << QByteArray("a1 b1") << QByteArray("a1") << QString("a1"); - QTest::newRow(" a1 b1") << QByteArray(" a1 b1") << QByteArray("a1") << QString("a1"); - QTest::newRow("\\n\\n\\nole i dole\\n") << QByteArray("\n\n\nole i dole\n") << QByteArray("ole") << QString("ole"); - - if (!for_QString) { - QTest::newRow("utf16-BE (empty)") << QByteArray("\xff\xfe", 2) << QByteArray() << QString(); - QTest::newRow("utf16-BE (corrupt)") << QByteArray("\xff", 1) << QByteArray("\xff") << QString::fromLatin1("\xff"); - QTest::newRow("utf16-LE (empty)") << QByteArray("\xfe\xff", 2) << QByteArray() << QString(); - QTest::newRow("utf16-LE (corrupt)") << QByteArray("\xfe", 1) << QByteArray("\xfe") << QString::fromLatin1("\xfe"); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::charPtr_read_operator_FromDevice_data() -{ - generateStringData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::charPtr_read_operator_FromDevice() -{ - QFETCH(QByteArray, input); - QFETCH(QByteArray, array_output); - - QBuffer buffer(&input); - buffer.open(QBuffer::ReadOnly); - QTextStream stream(&buffer); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - char buf[1024]; - stream >> buf; - - QCOMPARE((const char *)buf, array_output.constData()); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::stringRef_read_operator_FromDevice_data() -{ - generateStringData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::stringRef_read_operator_FromDevice() -{ - QFETCH(QByteArray, input); - QFETCH(QString, string_output); - - QBuffer buffer(&input); - buffer.open(QBuffer::ReadOnly); - QTextStream stream(&buffer); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - QString tmp; - stream >> tmp; - - QCOMPARE(tmp, string_output); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::byteArray_read_operator_FromDevice_data() -{ - generateStringData(false); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::byteArray_read_operator_FromDevice() -{ - QFETCH(QByteArray, input); - QFETCH(QByteArray, array_output); - - QBuffer buffer(&input); - buffer.open(QBuffer::ReadOnly); - QTextStream stream(&buffer); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - QByteArray array; - stream >> array; - - QCOMPARE(array, array_output); -} - -// ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_write_operator_ToDevice() \ - { \ - QFETCH(qulonglong, number); \ - QFETCH(QByteArray, data); \ - QFETCH(QByteArray, dataWithSeparators); \ - \ - QBuffer buffer; \ - buffer.open(QBuffer::WriteOnly); \ - QTextStream stream(&buffer); \ - stream.setLocale(QLocale::c()); \ - stream << (type)number; \ - stream.flush(); \ - QCOMPARE(buffer.data().constData(), data.constData()); \ - \ - QLocale locale("en-US"); \ - buffer.reset(); buffer.buffer().clear(); \ - stream.setLocale(locale); \ - stream << (type)number; \ - stream.flush(); \ - QCOMPARE(buffer.data(), dataWithSeparators); \ - \ - locale.setNumberOptions(QLocale::OmitGroupSeparator); \ - buffer.reset(); buffer.buffer().clear(); \ - stream.setLocale(locale); \ - stream << (type)number; \ - stream.flush(); \ - QCOMPARE(buffer.data().constData(), data.constData()); \ - \ - locale = QLocale("de-DE"); \ - buffer.reset(); buffer.buffer().clear(); \ - stream.setLocale(locale); \ - stream << (type)number; \ - stream.flush(); \ - QCOMPARE(buffer.data(), dataWithSeparators.replace(',', '.')); \ - } - -// ------------------------------------------------------------------------------ -void tst_QTextStream::signedShort_write_operator_ToDevice_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0") << QByteArray("0"); - QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1") << QByteArray("1"); - QTest::newRow("-1") << quint64(-1) << QByteArray("-1") << QByteArray("-1"); - QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767") << QByteArray("32,767"); - QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("-32768") << QByteArray("-32,768"); - QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("-32767") << QByteArray("-32,767"); - QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("-1") << QByteArray("-1"); - QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0") << QByteArray("0"); - QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1") << QByteArray("1"); -} -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedShort, signed short) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::unsignedShort_write_operator_ToDevice_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0") << QByteArray("0"); - QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1") << QByteArray("1"); - QTest::newRow("-1") << quint64(-1) << QByteArray("65535") << QByteArray("65,535"); - QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767") << QByteArray("32,767"); - QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768") << QByteArray("32,768"); - QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769") << QByteArray("32,769"); - QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535") << QByteArray("65,535"); - QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("0") << QByteArray("0"); - QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("1") << QByteArray("1"); -} -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedShort, unsigned short) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::signedInt_write_operator_ToDevice_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0") << QByteArray("0"); - QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1") << QByteArray("1"); - QTest::newRow("-1") << quint64(-1) << QByteArray("-1") << QByteArray("-1"); - QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767") << QByteArray("32,767"); - QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768") << QByteArray("32,768"); - QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769") << QByteArray("32,769"); - QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535") << QByteArray("65,535"); - QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536") << QByteArray("65,536"); - QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537") << QByteArray("65,537"); - QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647") << QByteArray("2,147,483,647"); - QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("-2147483648") << QByteArray("-2,147,483,648"); - QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("-2147483647") << QByteArray("-2,147,483,647"); - QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("-1") << QByteArray("-1"); - QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0") << QByteArray("0"); - QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1") << QByteArray("1"); -} -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(signedInt, signed int) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::unsignedInt_write_operator_ToDevice_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0") << QByteArray("0"); - QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1") << QByteArray("1"); - QTest::newRow("-1") << quint64(-1) << QByteArray("4294967295") << QByteArray("4,294,967,295"); - QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767") << QByteArray("32,767"); - QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768") << QByteArray("32,768"); - QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769") << QByteArray("32,769"); - QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535") << QByteArray("65,535"); - QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536") << QByteArray("65,536"); - QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537") << QByteArray("65,537"); - QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647") << QByteArray("2,147,483,647"); - QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648") << QByteArray("2,147,483,648"); - QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649") << QByteArray("2,147,483,649"); - QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295") << QByteArray("4,294,967,295"); - QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("0") << QByteArray("0"); - QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("1") << QByteArray("1"); -} -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(unsignedInt, unsigned int) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::qlonglong_write_operator_ToDevice_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0") << QByteArray("0"); - QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1") << QByteArray("1"); - QTest::newRow("-1") << quint64(-1) << QByteArray("-1") << QByteArray("-1"); - QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767") << QByteArray("32,767"); - QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768") << QByteArray("32,768"); - QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769") << QByteArray("32,769"); - QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535") << QByteArray("65,535"); - QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536") << QByteArray("65,536"); - QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537") << QByteArray("65,537"); - QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647") << QByteArray("2,147,483,647"); - QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648") << QByteArray("2,147,483,648"); - QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649") << QByteArray("2,147,483,649"); - QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295") << QByteArray("4,294,967,295"); - QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296") << QByteArray("4,294,967,296"); - QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297") << QByteArray("4,294,967,297"); - QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807") << QByteArray("9,223,372,036,854,775,807"); - QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("-9223372036854775808") << QByteArray("-9,223,372,036,854,775,808"); - QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("-9223372036854775807") << QByteArray("-9,223,372,036,854,775,807"); - QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("-1") << QByteArray("-1"); -} -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qlonglong, qlonglong) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::qulonglong_write_operator_ToDevice_data() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << Q_UINT64_C(0) << QByteArray("0") << QByteArray("0"); - QTest::newRow("1") << Q_UINT64_C(1) << QByteArray("1") << QByteArray("1"); - QTest::newRow("-1") << quint64(-1) << QByteArray("18446744073709551615") << QByteArray("18,446,744,073,709,551,615"); - QTest::newRow("32767") << Q_UINT64_C(32767) << QByteArray("32767") << QByteArray("32,767"); - QTest::newRow("32768") << Q_UINT64_C(32768) << QByteArray("32768") << QByteArray("32,768"); - QTest::newRow("32769") << Q_UINT64_C(32769) << QByteArray("32769") << QByteArray("32,769"); - QTest::newRow("65535") << Q_UINT64_C(65535) << QByteArray("65535") << QByteArray("65,535"); - QTest::newRow("65536") << Q_UINT64_C(65536) << QByteArray("65536") << QByteArray("65,536"); - QTest::newRow("65537") << Q_UINT64_C(65537) << QByteArray("65537") << QByteArray("65,537"); - QTest::newRow("2147483647") << Q_UINT64_C(2147483647) << QByteArray("2147483647") << QByteArray("2,147,483,647"); - QTest::newRow("2147483648") << Q_UINT64_C(2147483648) << QByteArray("2147483648") << QByteArray("2,147,483,648"); - QTest::newRow("2147483649") << Q_UINT64_C(2147483649) << QByteArray("2147483649") << QByteArray("2,147,483,649"); - QTest::newRow("4294967295") << Q_UINT64_C(4294967295) << QByteArray("4294967295") << QByteArray("4,294,967,295"); - QTest::newRow("4294967296") << Q_UINT64_C(4294967296) << QByteArray("4294967296") << QByteArray("4,294,967,296"); - QTest::newRow("4294967297") << Q_UINT64_C(4294967297) << QByteArray("4294967297") << QByteArray("4,294,967,297"); - QTest::newRow("9223372036854775807") << Q_UINT64_C(9223372036854775807) << QByteArray("9223372036854775807") << QByteArray("9,223,372,036,854,775,807"); - QTest::newRow("9223372036854775808") << Q_UINT64_C(9223372036854775808) << QByteArray("9223372036854775808") << QByteArray("9,223,372,036,854,775,808"); - QTest::newRow("9223372036854775809") << Q_UINT64_C(9223372036854775809) << QByteArray("9223372036854775809") << QByteArray("9,223,372,036,854,775,809"); - QTest::newRow("18446744073709551615") << Q_UINT64_C(18446744073709551615) << QByteArray("18446744073709551615") << QByteArray("18,446,744,073,709,551,615"); -} -IMPLEMENT_STREAM_LEFT_INT_OPERATOR_TEST(qulonglong, qulonglong) - ; - - -// ------------------------------------------------------------------------------ -void tst_QTextStream::generateRealNumbersDataWrite() -{ - QTest::addColumn("number"); - QTest::addColumn("data"); - QTest::addColumn("dataWithSeparators"); - - QTest::newRow("0") << 0.0 << QByteArray("0") << QByteArray("0"); - QTest::newRow("3.14") << 3.14 << QByteArray("3.14") << QByteArray("3.14"); - QTest::newRow("-3.14") << -3.14 << QByteArray("-3.14") << QByteArray("-3.14"); - QTest::newRow("1.2e+10") << 1.2e+10 << QByteArray("1.2e+10") << QByteArray("1.2e+10"); - QTest::newRow("-1.2e+10") << -1.2e+10 << QByteArray("-1.2e+10") << QByteArray("-1.2e+10"); - QTest::newRow("12345") << 12345. << QByteArray("12345") << QByteArray("12,345"); -} - -// ------------------------------------------------------------------------------ -#define IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(texttype, type) \ - void tst_QTextStream:: texttype##_write_operator_ToDevice_data() \ - { generateRealNumbersDataWrite(); } \ - void tst_QTextStream:: texttype##_write_operator_ToDevice() \ - { \ - QFETCH(double, number); \ - QFETCH(QByteArray, data); \ - QFETCH(QByteArray, dataWithSeparators); \ - \ - QBuffer buffer; \ - buffer.open(QBuffer::WriteOnly); \ - QTextStream stream(&buffer); \ - stream.setLocale(QLocale::c()); \ - float f = (float)number; \ - stream << f; \ - stream.flush(); \ - QCOMPARE(buffer.data().constData(), data.constData()); \ - \ - buffer.reset(); \ - stream.setLocale(QLocale("en-US")); \ - stream << f; \ - stream.flush(); \ - QCOMPARE(buffer.data(), dataWithSeparators); \ - } -IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(float, float) -IMPLEMENT_STREAM_LEFT_REAL_OPERATOR_TEST(double, float) - ; - -// ------------------------------------------------------------------------------ -void tst_QTextStream::string_write_operator_ToDevice_data() -{ - QTest::addColumn("bytedata"); - QTest::addColumn("stringdata"); - QTest::addColumn("result"); - - QTest::newRow("empty") << QByteArray("", 1) << QString(1, '\0') << QByteArray("", 1); - QTest::newRow("a") << QByteArray("a") << QString("a") << QByteArray("a"); - QTest::newRow("a cow jumped over the moon") - << QByteArray("a cow jumped over the moon") - << QString("a cow jumped over the moon") - << QByteArray("a cow jumped over the moon"); - - // ### get the utf16-be test on its legs. - /* - QTest::newRow("utf16-BE (a cow jumped over the moon)") - << QByteArray("\xff\xfe\x00\x61\x00\x20\x00\x63\x00\x6f\x00\x77\x00\x20\x00\x6a\x00\x75\x00\x6d\x00\x70\x00\x65\x00\x64\x00\x20\x00\x6f\x00\x76\x00\x65\x00\x72\x00\x20\x00\x74\x00\x68\x00\x65\x00\x20\x00\x6d\x00\x6f\x00\x6f\x00\x6e\x00\x0a", 56) - << QString("a cow jumped over the moon") - << QByteArray("a cow jumped over the moon"); - */ -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::string_write_operator_ToDevice() -{ - QFETCH(QByteArray, bytedata); - QFETCH(QString, stringdata); - QFETCH(QByteArray, result); - - { - // char* - QBuffer buf; - buf.open(QBuffer::WriteOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream << bytedata.constData(); - stream.flush(); - QCOMPARE(buf.buffer().constData(), result.constData()); - } - { - // QByteArray - QBuffer buf; - buf.open(QBuffer::WriteOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream << bytedata; - stream.flush(); - QCOMPARE(buf.buffer().constData(), result.constData()); - } - { - // QString - QBuffer buf; - buf.open(QBuffer::WriteOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream << stringdata; - stream.flush(); - QCOMPARE(buf.buffer().constData(), result.constData()); - } -} - -void tst_QTextStream::latin1String_write_operator_ToDevice() -{ - QBuffer buf; - buf.open(QBuffer::WriteOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream << QLatin1String("No explicit length"); - stream << QLatin1String("Explicit length - ignore this part", 15); - stream.flush(); - QCOMPARE(buf.buffer().constData(), "No explicit lengthExplicit length"); -} - -void tst_QTextStream::stringref_write_operator_ToDevice() -{ - QBuffer buf; - buf.open(QBuffer::WriteOnly); - QTextStream stream(&buf); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - const QString expected = "No explicit lengthExplicit length"; - - stream << expected.leftRef(18); - stream << expected.midRef(18); - stream.flush(); - QCOMPARE(buf.buffer().constData(), "No explicit lengthExplicit length"); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::useCase1() -{ - QFile::remove("testfile"); - QFile file("testfile"); - QVERIFY(file.open(QFile::ReadWrite)); - - { - QTextStream stream(&file); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream << 4.15 << ' ' << QByteArray("abc") << ' ' << QString("ole"); - } - - file.seek(0); - QCOMPARE(file.readAll(), QByteArray("4.15 abc ole")); - file.seek(0); - - { - double d; - QByteArray a; - QString s; - QTextStream stream(&file); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream >> d; - stream >> a; - stream >> s; - - QCOMPARE(d, 4.15); - QCOMPARE(a, QByteArray("abc")); - QCOMPARE(s, QString("ole")); - } -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::useCase2() -{ - QFile::remove("testfile"); - QFile file("testfile"); - QVERIFY(file.open(QFile::ReadWrite)); - - QTextStream stream(&file); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - - stream << 4.15 << ' ' << QByteArray("abc") << ' ' << QString("ole"); - - file.close(); - QVERIFY(file.open(QFile::ReadWrite)); - - QCOMPARE(file.readAll(), QByteArray("4.15 abc ole")); - - file.close(); - QVERIFY(file.open(QFile::ReadWrite)); - - double d; - QByteArray a; - QString s; - QTextStream stream2(&file); - stream2.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream2.setAutoDetectUnicode(true); - - stream2 >> d; - stream2 >> a; - stream2 >> s; - - QCOMPARE(d, 4.15); - QCOMPARE(a, QByteArray("abc")); - QCOMPARE(s, QString("ole")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::manipulators_data() -{ - QTest::addColumn("flags"); - QTest::addColumn("width"); - QTest::addColumn("realNumber"); - QTest::addColumn("intNumber"); - QTest::addColumn("textData"); - QTest::addColumn("result"); - - QTest::newRow("no flags") << 0 << 0 << 5.0 << 5 << QString("five") << QByteArray("55five"); - QTest::newRow("rightadjust") << 0 << 10 << 5.0 << 5 << QString("five") << QByteArray(" 5 5 five"); - - // ### FIX -// QTest::newRow("leftadjust") << int(QTextStream::left) << 10 << 5.0 << 5 << QString("five") << QByteArray("5 5 five "); -// QTest::newRow("showpos") << int(QTextStream::showpos) << 10 << 5.0 << 5 << QString("five") << QByteArray(" +5 +5 five"); -// QTest::newRow("showpos2") << int(QTextStream::showpos) << 5 << 3.14 << -5 << QString("five") << QByteArray("+3.14 -5 five"); -// QTest::newRow("hex") << int(QTextStream::hex | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0x5 five"); -// QTest::newRow("hex uppercase") << int(QTextStream::hex | QTextStream::uppercase | QTextStream::showbase) << 5 << 3.14 << -5 << QString("five") << QByteArray(" 3.14 -0X5 five"); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::manipulators() -{ -// QFETCH(int, flags); - QFETCH(int, width); - QFETCH(double, realNumber); - QFETCH(int, intNumber); - QFETCH(QString, textData); - QFETCH(QByteArray, result); - - QBuffer buffer; - buffer.open(QBuffer::WriteOnly); - - QTextStream stream(&buffer); - stream.setCodec(QTextCodec::codecForName("ISO-8859-1")); - stream.setAutoDetectUnicode(true); - -// stream.setFlags(flags); - stream.setFieldWidth(width); - stream << realNumber; - stream << intNumber; - stream << textData; - stream.flush(); - - QCOMPARE(buffer.data().constData(), result.constData()); -} - -void tst_QTextStream::generateBOM() -{ - QFile::remove("bom.txt"); - { - QFile file("bom.txt"); - QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate)); - - QTextStream stream(&file); - stream.setCodec(QTextCodec::codecForName("UTF-16LE")); - stream << "Hello" << endl; - - file.close(); - QVERIFY(file.open(QFile::ReadOnly)); - QCOMPARE(file.readAll(), QByteArray("\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 12)); - } - - QFile::remove("bom.txt"); - { - QFile file("bom.txt"); - QVERIFY(file.open(QFile::ReadWrite | QFile::Truncate)); - - QTextStream stream(&file); - stream.setCodec(QTextCodec::codecForName("UTF-16LE")); - stream << bom << "Hello" << endl; - - file.close(); - QVERIFY(file.open(QFile::ReadOnly)); - QCOMPARE(file.readAll(), QByteArray("\xff\xfe\x48\x00\x65\00\x6c\00\x6c\00\x6f\x00\x0a\x00", 14)); - } -} - -void tst_QTextStream::readBomSeekBackReadBomAgain() -{ - QFile::remove("utf8bom"); - QFile file("utf8bom"); - QVERIFY(file.open(QFile::ReadWrite)); - file.write("\xef\xbb\xbf""Andreas"); - file.seek(0); - QCOMPARE(file.pos(), qint64(0)); - - QTextStream stream(&file); - stream.setCodec("UTF-8"); - QString Andreas; - stream >> Andreas; - QCOMPARE(Andreas, QString("Andreas")); - stream.seek(0); - stream >> Andreas; - QCOMPARE(Andreas, QString("Andreas")); -} - -// ------------------------------------------------------------------------------ -void tst_QTextStream::status_real_read_data() -{ - QTest::addColumn("input"); - QTest::addColumn("expected_f"); - QTest::addColumn("expected_w"); - QTest::addColumn >("results"); - - QTest::newRow("1.23 abc ") << QString("1.23 abc ") << 1.23 << QString("abc") - << (QList() - << (int)QTextStream::Ok - << (int)QTextStream::ReadCorruptData - << (int)QTextStream::Ok - << (int)QTextStream::Ok - << (int)QTextStream::ReadPastEnd); -} - -void tst_QTextStream::status_real_read() -{ - QFETCH(QString, input); - QFETCH(double, expected_f); - QFETCH(QString, expected_w); - QFETCH(QList, results); - - QTextStream s(&input); - double f = 0.0; - QString w; - s >> f; - QCOMPARE((int)s.status(), results.at(0)); - QCOMPARE(f, expected_f); - s >> f; - QCOMPARE((int)s.status(), results.at(1)); - s.resetStatus(); - QCOMPARE((int)s.status(), results.at(2)); - s >> w; - QCOMPARE((int)s.status(), results.at(3)); - QCOMPARE(w, expected_w); - s >> f; - QCOMPARE((int)s.status(), results.at(4)); -} - -void tst_QTextStream::status_integer_read() -{ - QTextStream s("123 abc "); - int i; - QString w; - s >> i; - QCOMPARE(s.status(), QTextStream::Ok); - s >> i; - QCOMPARE(s.status(), QTextStream::ReadCorruptData); - s.resetStatus(); - QCOMPARE(s.status(), QTextStream::Ok); - s >> w; - QCOMPARE(s.status(), QTextStream::Ok); - QCOMPARE(w, QString("abc")); - s >> i; - QCOMPARE(s.status(), QTextStream::ReadPastEnd); -} - -void tst_QTextStream::status_word_read() -{ - QTextStream s("abc "); - QString w; - s >> w; - QCOMPARE(s.status(), QTextStream::Ok); - s >> w; - QCOMPARE(s.status(), QTextStream::ReadPastEnd); -} - -class FakeBuffer : public QBuffer -{ -protected: - qint64 writeData(const char *c, qint64 i) { return m_lock ? 0 : QBuffer::writeData(c, i); } -public: - FakeBuffer(bool locked = false) : m_lock(locked) {} - void setLocked(bool locked) { m_lock = locked; } -private: - bool m_lock; -}; - -void tst_QTextStream::status_write_error() -{ - FakeBuffer fb(false); - QVERIFY(fb.open(QBuffer::ReadWrite)); - QTextStream fs(&fb); - fs.setCodec(QTextCodec::codecForName("latin1")); - /* first write some initial content */ - fs << "hello"; - fs.flush(); - QCOMPARE(fs.status(), QTextStream::Ok); - QCOMPARE(fb.data(), QByteArray("hello")); - /* then test that writing can cause an error */ - fb.setLocked(true); - fs << "error"; - fs.flush(); - QCOMPARE(fs.status(), QTextStream::WriteFailed); - QCOMPARE(fb.data(), QByteArray("hello")); - /* finally test that writing after an error doesn't change the stream any more */ - fb.setLocked(false); - fs << "can't do that"; - fs.flush(); - QCOMPARE(fs.status(), QTextStream::WriteFailed); - QCOMPARE(fb.data(), QByteArray("hello")); -} - -void tst_QTextStream::alignAccountingStyle() -{ - { - QString result; - QTextStream out(&result); - out.setFieldAlignment(QTextStream::AlignAccountingStyle); - out.setFieldWidth(4); - out.setPadChar('0'); - out << -1; - QCOMPARE(result, QLatin1String("-001")); - } - - { - QString result; - QTextStream out(&result); - out.setFieldAlignment(QTextStream::AlignAccountingStyle); - out.setFieldWidth(4); - out.setPadChar('0'); - out << "-1"; - QCOMPARE(result, QLatin1String("00-1")); - } - - { - QString result; - QTextStream out(&result); - out.setFieldAlignment(QTextStream::AlignAccountingStyle); - out.setFieldWidth(6); - out.setPadChar('0'); - out << -1.2; - QCOMPARE(result, QLatin1String("-001.2")); - } - - { - QString result; - QTextStream out(&result); - out.setFieldAlignment(QTextStream::AlignAccountingStyle); - out.setFieldWidth(6); - out.setPadChar('0'); - out << "-1.2"; - QCOMPARE(result, QLatin1String("00-1.2")); - } -} - -void tst_QTextStream::setCodec() -{ - QByteArray ba("\xe5 v\xe6r\n\xc3\xa5 v\xc3\xa6r\n"); - QString res = QLatin1String("\xe5 v\xe6r"); - - QTextStream stream(ba); - stream.setCodec("ISO 8859-1"); - QCOMPARE(stream.readLine(),res); - stream.setCodec("UTF-8"); - QCOMPARE(stream.readLine(),res); -} - -void tst_QTextStream::double_write_with_flags_data() -{ - QTest::addColumn("number"); - QTest::addColumn("output"); - QTest::addColumn("numberFlags"); - QTest::addColumn("realNumberNotation"); - - QTest::newRow("-ForceSign") << -1.23 << QString("-1.23") << (int)QTextStream::ForceSign << 0; - QTest::newRow("+ForceSign") << 1.23 << QString("+1.23") << (int)QTextStream::ForceSign << 0; - QTest::newRow("inf") << qInf() << QString("inf") << 0 << 0; - QTest::newRow("-inf") << -qInf() << QString("-inf") << 0 << 0; - QTest::newRow("inf uppercase") << qInf() << QString("INF") << (int)QTextStream::UppercaseDigits << 0; - QTest::newRow("-inf uppercase") << -qInf() << QString("-INF") << (int)QTextStream::UppercaseDigits << 0; - QTest::newRow("nan") << qQNaN() << QString("nan") << 0 << 0; - QTest::newRow("NAN") << qQNaN() << QString("NAN") << (int)QTextStream::UppercaseDigits << 0; - QTest::newRow("scientific") << 1.234567e+02 << QString("1.234567e+02") << 0 << (int)QTextStream::ScientificNotation; - QTest::newRow("scientific2") << 1.234567e+02 << QString("1.234567e+02") << (int)QTextStream::UppercaseBase << (int)QTextStream::ScientificNotation; - QTest::newRow("scientific uppercase") << 1.234567e+02 << QString("1.234567E+02") << (int)QTextStream::UppercaseDigits << (int)QTextStream::ScientificNotation; -} - -void tst_QTextStream::double_write_with_flags() -{ - QFETCH(double, number); - QFETCH(QString, output); - QFETCH(int, numberFlags); - QFETCH(int, realNumberNotation); - - QString buf; - QTextStream stream(&buf); - if (numberFlags) - stream.setNumberFlags(QTextStream::NumberFlag(numberFlags)); - if (realNumberNotation) - stream.setRealNumberNotation(QTextStream::RealNumberNotation(realNumberNotation)); - stream << number; - QCOMPARE(buf, output); -} - -void tst_QTextStream::double_write_with_precision_data() -{ - QTest::addColumn("precision"); - QTest::addColumn("value"); - QTest::addColumn("result"); - - QTest::ignoreMessage(QtWarningMsg, "QTextStream::setRealNumberPrecision: Invalid precision (-1)"); - QTest::newRow("-1") << -1 << 3.14159 << QString("3.14159"); - QTest::newRow("0") << 0 << 3.14159 << QString("3"); - QTest::newRow("1") << 1 << 3.14159 << QString("3"); - QTest::newRow("2") << 2 << 3.14159 << QString("3.1"); - QTest::newRow("3") << 3 << 3.14159 << QString("3.14"); - QTest::newRow("5") << 5 << 3.14159 << QString("3.1416"); - QTest::newRow("6") << 6 << 3.14159 << QString("3.14159"); - QTest::newRow("7") << 7 << 3.14159 << QString("3.14159"); - QTest::newRow("10") << 10 << 3.14159 << QString("3.14159"); -} - -void tst_QTextStream::double_write_with_precision() -{ - QFETCH(int, precision); - QFETCH(double, value); - QFETCH(QString, result); - - QString buf; - QTextStream stream(&buf); - stream.setRealNumberPrecision(precision); - stream << value; - QCOMPARE(buf, result); -} - -void tst_QTextStream::int_read_with_locale_data() -{ - QTest::addColumn("locale"); - QTest::addColumn("input"); - QTest::addColumn("output"); - - QTest::newRow("C -123") << QString("C") << QString("-123") << -123; - QTest::newRow("C +123") << QString("C") << QString("+123") << 123; - QTest::newRow("C 12345") << QString("C") << QString("12345") << 12345; - QTest::newRow("C 12,345") << QString("C") << QString("12,345") << 12; - QTest::newRow("C 12.345") << QString("C") << QString("12.345") << 12; - - QTest::newRow("de_DE -123") << QString("de_DE") << QString("-123") << -123; - QTest::newRow("de_DE +123") << QString("de_DE") << QString("+123") << 123; - QTest::newRow("de_DE 12345") << QString("de_DE") << QString("12345") << 12345; - QTest::newRow("de_DE 12.345") << QString("de_DE") << QString("12.345") << 12345; - QTest::newRow("de_DE .12345") << QString("de_DE") << QString(".12345") << 0; -} - -void tst_QTextStream::int_read_with_locale() -{ - QFETCH(QString, locale); - QFETCH(QString, input); - QFETCH(int, output); - - QTextStream stream(&input); - stream.setLocale(locale); - int result; - stream >> result; - QCOMPARE(result, output); -} - -void tst_QTextStream::int_write_with_locale_data() -{ - QTest::addColumn("locale"); - QTest::addColumn("numberFlags"); - QTest::addColumn("input"); - QTest::addColumn("output"); - - QTest::newRow("C -123") << QString("C") << 0 << -123 << QString("-123"); - QTest::newRow("C +123") << QString("C") << (int)QTextStream::ForceSign << 123 << QString("+123"); - QTest::newRow("C 12345") << QString("C") << 0 << 12345 << QString("12345"); - - QTest::newRow("de_DE -123") << QString("de_DE") << 0 << -123 << QString("-123"); - QTest::newRow("de_DE +123") << QString("de_DE") << (int)QTextStream::ForceSign << 123 << QString("+123"); - QTest::newRow("de_DE 12345") << QString("de_DE") << 0 << 12345 << QString("12.345"); -} - -void tst_QTextStream::int_write_with_locale() -{ - QFETCH(QString, locale); - QFETCH(int, numberFlags); - QFETCH(int, input); - QFETCH(QString, output); - - QString result; - QTextStream stream(&result); - stream.setLocale(locale); - if (numberFlags) - stream.setNumberFlags(QTextStream::NumberFlags(numberFlags)); - stream << input; - QCOMPARE(result, output); -} - -void tst_QTextStream::textModeOnEmptyRead() -{ - const QString filename(tempDir.path() + QLatin1String("/textmodetest.txt")); - - QFile file(filename); - QVERIFY2(file.open(QIODevice::ReadWrite | QIODevice::Text), qPrintable(file.errorString())); - QTextStream stream(&file); - QVERIFY(file.isTextModeEnabled()); - QString emptyLine = stream.readLine(); // Text mode flag cleared here - QVERIFY(file.isTextModeEnabled()); -} - - -// ------------------------------------------------------------------------------ - -QTEST_MAIN(tst_QTextStream) -#include "tst_qtextstream.moc" - -- cgit v1.2.3