| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2013, Opera Software ASA. All rights reserved. | 2 * Copyright (C) 2013, Opera Software ASA. All rights reserved. |
| 3 * | 3 * |
| 4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
| 5 * modification, are permitted provided that the following conditions are | 5 * modification, are permitted provided that the following conditions are |
| 6 * met: | 6 * met: |
| 7 * | 7 * |
| 8 * * Redistributions of source code must retain the above copyright | 8 * * Redistributions of source code must retain the above copyright |
| 9 * notice, this list of conditions and the following disclaimer. | 9 * notice, this list of conditions and the following disclaimer. |
| 10 * * Redistributions in binary form must reproduce the above | 10 * * Redistributions in binary form must reproduce the above |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE | 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. | 28 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 29 */ | 29 */ |
| 30 | 30 |
| 31 #include "config.h" | 31 #include "config.h" |
| 32 #include "core/html/track/vtt/BufferedLineReader.h" | 32 #include "core/html/track/vtt/BufferedLineReader.h" |
| 33 | 33 |
| 34 #include "wtf/text/CString.h" | 34 #include "wtf/text/CString.h" |
| 35 #include "wtf/text/WTFString.h" | 35 #include "wtf/text/WTFString.h" |
| 36 #include "wtf/unicode/CharacterNames.h" | 36 #include "wtf/unicode/CharacterNames.h" |
| 37 | |
| 38 #include <gtest/gtest.h> | 37 #include <gtest/gtest.h> |
| 39 | 38 |
| 40 using blink::BufferedLineReader; | 39 namespace blink { |
| 41 | 40 |
| 42 namespace { | 41 TEST(BufferedLineReaderTest, Constructor) |
| 43 | |
| 44 TEST(BufferedLineReader, Constructor) | |
| 45 { | 42 { |
| 46 BufferedLineReader reader; | 43 BufferedLineReader reader; |
| 47 ASSERT_FALSE(reader.isAtEndOfStream()); | 44 ASSERT_FALSE(reader.isAtEndOfStream()); |
| 48 String line; | 45 String line; |
| 49 ASSERT_FALSE(reader.getLine(line)); | 46 ASSERT_FALSE(reader.getLine(line)); |
| 50 } | 47 } |
| 51 | 48 |
| 52 TEST(BufferedLineReader, EOSNoInput) | 49 TEST(BufferedLineReaderTest, EOSNoInput) |
| 53 { | 50 { |
| 54 BufferedLineReader reader; | 51 BufferedLineReader reader; |
| 55 String line; | 52 String line; |
| 56 ASSERT_FALSE(reader.getLine(line)); | 53 ASSERT_FALSE(reader.getLine(line)); |
| 57 reader.setEndOfStream(); | 54 reader.setEndOfStream(); |
| 58 // No input observed, so still no line. | 55 // No input observed, so still no line. |
| 59 ASSERT_FALSE(reader.getLine(line)); | 56 ASSERT_FALSE(reader.getLine(line)); |
| 60 } | 57 } |
| 61 | 58 |
| 62 TEST(BufferedLineReader, EOSInput) | 59 TEST(BufferedLineReaderTest, EOSInput) |
| 63 { | 60 { |
| 64 BufferedLineReader reader; | 61 BufferedLineReader reader; |
| 65 reader.append("A"); | 62 reader.append("A"); |
| 66 reader.setEndOfStream(); | 63 reader.setEndOfStream(); |
| 67 String line; | 64 String line; |
| 68 ASSERT_TRUE(reader.getLine(line)); | 65 ASSERT_TRUE(reader.getLine(line)); |
| 69 ASSERT_EQ(line, "A"); | 66 ASSERT_EQ(line, "A"); |
| 70 } | 67 } |
| 71 | 68 |
| 72 TEST(BufferedLineReader, EOSMultipleReads_1) | 69 TEST(BufferedLineReaderTest, EOSMultipleReads_1) |
| 73 { | 70 { |
| 74 BufferedLineReader reader; | 71 BufferedLineReader reader; |
| 75 reader.append("A"); | 72 reader.append("A"); |
| 76 reader.setEndOfStream(); | 73 reader.setEndOfStream(); |
| 77 String line; | 74 String line; |
| 78 ASSERT_TRUE(reader.getLine(line)); | 75 ASSERT_TRUE(reader.getLine(line)); |
| 79 ASSERT_EQ(line, "A"); | 76 ASSERT_EQ(line, "A"); |
| 80 // No more lines returned. | 77 // No more lines returned. |
| 81 ASSERT_FALSE(reader.getLine(line)); | 78 ASSERT_FALSE(reader.getLine(line)); |
| 82 ASSERT_FALSE(reader.getLine(line)); | 79 ASSERT_FALSE(reader.getLine(line)); |
| 83 } | 80 } |
| 84 | 81 |
| 85 TEST(BufferedLineReader, EOSMultipleReads_2) | 82 TEST(BufferedLineReaderTest, EOSMultipleReads_2) |
| 86 { | 83 { |
| 87 BufferedLineReader reader; | 84 BufferedLineReader reader; |
| 88 reader.append("A\n"); | 85 reader.append("A\n"); |
| 89 reader.setEndOfStream(); | 86 reader.setEndOfStream(); |
| 90 String line; | 87 String line; |
| 91 ASSERT_TRUE(reader.getLine(line)); | 88 ASSERT_TRUE(reader.getLine(line)); |
| 92 ASSERT_EQ(line, "A"); | 89 ASSERT_EQ(line, "A"); |
| 93 // No more lines returned. | 90 // No more lines returned. |
| 94 ASSERT_FALSE(reader.getLine(line)); | 91 ASSERT_FALSE(reader.getLine(line)); |
| 95 ASSERT_FALSE(reader.getLine(line)); | 92 ASSERT_FALSE(reader.getLine(line)); |
| 96 } | 93 } |
| 97 | 94 |
| 98 TEST(BufferedLineReader, LineEndingCR) | 95 TEST(BufferedLineReaderTest, LineEndingCR) |
| 99 { | 96 { |
| 100 BufferedLineReader reader; | 97 BufferedLineReader reader; |
| 101 reader.append("X\rY"); | 98 reader.append("X\rY"); |
| 102 reader.setEndOfStream(); | 99 reader.setEndOfStream(); |
| 103 String line; | 100 String line; |
| 104 ASSERT_TRUE(reader.getLine(line)); | 101 ASSERT_TRUE(reader.getLine(line)); |
| 105 ASSERT_EQ(line, "X"); | 102 ASSERT_EQ(line, "X"); |
| 106 ASSERT_TRUE(reader.getLine(line)); | 103 ASSERT_TRUE(reader.getLine(line)); |
| 107 ASSERT_EQ(line, "Y"); | 104 ASSERT_EQ(line, "Y"); |
| 108 } | 105 } |
| 109 | 106 |
| 110 TEST(BufferedLineReader, LineEndingCR_EOS) | 107 TEST(BufferedLineReaderTest, LineEndingCR_EOS) |
| 111 { | 108 { |
| 112 BufferedLineReader reader; | 109 BufferedLineReader reader; |
| 113 reader.append("X\r"); | 110 reader.append("X\r"); |
| 114 reader.setEndOfStream(); | 111 reader.setEndOfStream(); |
| 115 String line; | 112 String line; |
| 116 ASSERT_TRUE(reader.getLine(line)); | 113 ASSERT_TRUE(reader.getLine(line)); |
| 117 ASSERT_EQ(line, "X"); | 114 ASSERT_EQ(line, "X"); |
| 118 ASSERT_FALSE(reader.getLine(line)); | 115 ASSERT_FALSE(reader.getLine(line)); |
| 119 } | 116 } |
| 120 | 117 |
| 121 TEST(BufferedLineReader, LineEndingLF) | 118 TEST(BufferedLineReaderTest, LineEndingLF) |
| 122 { | 119 { |
| 123 BufferedLineReader reader; | 120 BufferedLineReader reader; |
| 124 reader.append("X\nY"); | 121 reader.append("X\nY"); |
| 125 reader.setEndOfStream(); | 122 reader.setEndOfStream(); |
| 126 String line; | 123 String line; |
| 127 ASSERT_TRUE(reader.getLine(line)); | 124 ASSERT_TRUE(reader.getLine(line)); |
| 128 ASSERT_EQ(line, "X"); | 125 ASSERT_EQ(line, "X"); |
| 129 ASSERT_TRUE(reader.getLine(line)); | 126 ASSERT_TRUE(reader.getLine(line)); |
| 130 ASSERT_EQ(line, "Y"); | 127 ASSERT_EQ(line, "Y"); |
| 131 } | 128 } |
| 132 | 129 |
| 133 TEST(BufferedLineReader, LineEndingLF_EOS) | 130 TEST(BufferedLineReaderTest, LineEndingLF_EOS) |
| 134 { | 131 { |
| 135 BufferedLineReader reader; | 132 BufferedLineReader reader; |
| 136 reader.append("X\n"); | 133 reader.append("X\n"); |
| 137 reader.setEndOfStream(); | 134 reader.setEndOfStream(); |
| 138 String line; | 135 String line; |
| 139 ASSERT_TRUE(reader.getLine(line)); | 136 ASSERT_TRUE(reader.getLine(line)); |
| 140 ASSERT_EQ(line, "X"); | 137 ASSERT_EQ(line, "X"); |
| 141 ASSERT_FALSE(reader.getLine(line)); | 138 ASSERT_FALSE(reader.getLine(line)); |
| 142 } | 139 } |
| 143 | 140 |
| 144 TEST(BufferedLineReader, LineEndingCRLF) | 141 TEST(BufferedLineReaderTest, LineEndingCRLF) |
| 145 { | 142 { |
| 146 BufferedLineReader reader; | 143 BufferedLineReader reader; |
| 147 reader.append("X\r\nY"); | 144 reader.append("X\r\nY"); |
| 148 reader.setEndOfStream(); | 145 reader.setEndOfStream(); |
| 149 String line; | 146 String line; |
| 150 ASSERT_TRUE(reader.getLine(line)); | 147 ASSERT_TRUE(reader.getLine(line)); |
| 151 ASSERT_EQ(line, "X"); | 148 ASSERT_EQ(line, "X"); |
| 152 ASSERT_TRUE(reader.getLine(line)); | 149 ASSERT_TRUE(reader.getLine(line)); |
| 153 ASSERT_EQ(line, "Y"); | 150 ASSERT_EQ(line, "Y"); |
| 154 } | 151 } |
| 155 | 152 |
| 156 TEST(BufferedLineReader, LineEndingCRLF_EOS) | 153 TEST(BufferedLineReaderTest, LineEndingCRLF_EOS) |
| 157 { | 154 { |
| 158 BufferedLineReader reader; | 155 BufferedLineReader reader; |
| 159 reader.append("X\r\n"); | 156 reader.append("X\r\n"); |
| 160 reader.setEndOfStream(); | 157 reader.setEndOfStream(); |
| 161 String line; | 158 String line; |
| 162 ASSERT_TRUE(reader.getLine(line)); | 159 ASSERT_TRUE(reader.getLine(line)); |
| 163 ASSERT_EQ(line, "X"); | 160 ASSERT_EQ(line, "X"); |
| 164 ASSERT_FALSE(reader.getLine(line)); | 161 ASSERT_FALSE(reader.getLine(line)); |
| 165 } | 162 } |
| 166 | 163 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 181 StringBuilder builder; | 178 StringBuilder builder; |
| 182 for (int i = 0; i < count; ++i) { | 179 for (int i = 0; i < count; ++i) { |
| 183 builder.append(lines[i]); | 180 builder.append(lines[i]); |
| 184 builder.append(LineBreakString(breaks[i])); | 181 builder.append(LineBreakString(breaks[i])); |
| 185 } | 182 } |
| 186 return builder.toString(); | 183 return builder.toString(); |
| 187 } | 184 } |
| 188 | 185 |
| 189 const size_t blockSizes[] = { 64, 32, 16, 8, 4, 2, 1, 3, 5, 7, 9, 11, 13, 17, 19
, 23 }; | 186 const size_t blockSizes[] = { 64, 32, 16, 8, 4, 2, 1, 3, 5, 7, 9, 11, 13, 17, 19
, 23 }; |
| 190 | 187 |
| 191 TEST(BufferedLineReader, BufferSizes) | 188 TEST(BufferedLineReaderTest, BufferSizes) |
| 192 { | 189 { |
| 193 const char* lines[] = { | 190 const char* lines[] = { |
| 194 "aaaaaaaaaaaaaaaa", | 191 "aaaaaaaaaaaaaaaa", |
| 195 "bbbbbbbbbb", | 192 "bbbbbbbbbb", |
| 196 "ccccccccccccc", | 193 "ccccccccccccc", |
| 197 "", | 194 "", |
| 198 "dddddd", | 195 "dddddd", |
| 199 "", | 196 "", |
| 200 "eeeeeeeeee" | 197 "eeeeeeeeee" |
| 201 }; | 198 }; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 214 String line; | 211 String line; |
| 215 while (reader.getLine(line)) { | 212 while (reader.getLine(line)) { |
| 216 ASSERT_LT(lineCount, numTestLines); | 213 ASSERT_LT(lineCount, numTestLines); |
| 217 ASSERT_EQ(line, lines[lineCount++]); | 214 ASSERT_EQ(line, lines[lineCount++]); |
| 218 } | 215 } |
| 219 } | 216 } |
| 220 ASSERT_EQ(lineCount, numTestLines); | 217 ASSERT_EQ(lineCount, numTestLines); |
| 221 } | 218 } |
| 222 } | 219 } |
| 223 | 220 |
| 224 TEST(BufferedLineReader, BufferSizesMixedEndings) | 221 TEST(BufferedLineReaderTest, BufferSizesMixedEndings) |
| 225 { | 222 { |
| 226 const char* lines[] = { | 223 const char* lines[] = { |
| 227 "aaaaaaaaaaaaaaaa", | 224 "aaaaaaaaaaaaaaaa", |
| 228 "bbbbbbbbbb", | 225 "bbbbbbbbbb", |
| 229 "ccccccccccccc", | 226 "ccccccccccccc", |
| 230 "", | 227 "", |
| 231 "dddddd", | 228 "dddddd", |
| 232 "eeeeeeeeee", | 229 "eeeeeeeeee", |
| 233 "fffffffffffffffffff" | 230 "fffffffffffffffffff" |
| 234 }; | 231 }; |
| (...skipping 12 matching lines...) Expand all Loading... |
| 247 String line; | 244 String line; |
| 248 while (reader.getLine(line)) { | 245 while (reader.getLine(line)) { |
| 249 ASSERT_LT(lineCount, numTestLines); | 246 ASSERT_LT(lineCount, numTestLines); |
| 250 ASSERT_EQ(line, lines[lineCount++]); | 247 ASSERT_EQ(line, lines[lineCount++]); |
| 251 } | 248 } |
| 252 } | 249 } |
| 253 ASSERT_EQ(lineCount, numTestLines); | 250 ASSERT_EQ(lineCount, numTestLines); |
| 254 } | 251 } |
| 255 } | 252 } |
| 256 | 253 |
| 257 TEST(BufferedLineReader, BufferBoundaryInCRLF_1) | 254 TEST(BufferedLineReaderTest, BufferBoundaryInCRLF_1) |
| 258 { | 255 { |
| 259 BufferedLineReader reader; | 256 BufferedLineReader reader; |
| 260 reader.append("X\r"); | 257 reader.append("X\r"); |
| 261 String line; | 258 String line; |
| 262 ASSERT_TRUE(reader.getLine(line)); | 259 ASSERT_TRUE(reader.getLine(line)); |
| 263 ASSERT_EQ(line, "X"); | 260 ASSERT_EQ(line, "X"); |
| 264 reader.append("\n"); | 261 reader.append("\n"); |
| 265 ASSERT_FALSE(reader.getLine(line)); | 262 ASSERT_FALSE(reader.getLine(line)); |
| 266 } | 263 } |
| 267 | 264 |
| 268 TEST(BufferedLineReader, BufferBoundaryInCRLF_2) | 265 TEST(BufferedLineReaderTest, BufferBoundaryInCRLF_2) |
| 269 { | 266 { |
| 270 BufferedLineReader reader; | 267 BufferedLineReader reader; |
| 271 reader.append("X\r"); | 268 reader.append("X\r"); |
| 272 String line; | 269 String line; |
| 273 ASSERT_TRUE(reader.getLine(line)); | 270 ASSERT_TRUE(reader.getLine(line)); |
| 274 ASSERT_EQ(line, "X"); | 271 ASSERT_EQ(line, "X"); |
| 275 ASSERT_FALSE(reader.getLine(line)); | 272 ASSERT_FALSE(reader.getLine(line)); |
| 276 reader.append("\n"); | 273 reader.append("\n"); |
| 277 ASSERT_FALSE(reader.getLine(line)); | 274 ASSERT_FALSE(reader.getLine(line)); |
| 278 reader.append("Y\n"); | 275 reader.append("Y\n"); |
| 279 ASSERT_TRUE(reader.getLine(line)); | 276 ASSERT_TRUE(reader.getLine(line)); |
| 280 ASSERT_EQ(line, "Y"); | 277 ASSERT_EQ(line, "Y"); |
| 281 } | 278 } |
| 282 | 279 |
| 283 TEST(BufferedLineReader, NormalizedNUL) | 280 TEST(BufferedLineReaderTest, NormalizedNUL) |
| 284 { | 281 { |
| 285 BufferedLineReader reader; | 282 BufferedLineReader reader; |
| 286 reader.append(String("X\0Y\n", 4)); | 283 reader.append(String("X\0Y\n", 4)); |
| 287 String line; | 284 String line; |
| 288 ASSERT_TRUE(reader.getLine(line)); | 285 ASSERT_TRUE(reader.getLine(line)); |
| 289 ASSERT_EQ(line[1], replacementCharacter); | 286 ASSERT_EQ(line[1], replacementCharacter); |
| 290 } | 287 } |
| 291 | 288 |
| 292 } // namespace | 289 } // namespace blink |
| OLD | NEW |