diff options
Diffstat (limited to 'deps/v8/test/cctest/test-utils.cc')
-rw-r--r-- | deps/v8/test/cctest/test-utils.cc | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/deps/v8/test/cctest/test-utils.cc b/deps/v8/test/cctest/test-utils.cc index bcb185d24f..88ef0a204d 100644 --- a/deps/v8/test/cctest/test-utils.cc +++ b/deps/v8/test/cctest/test-utils.cc @@ -131,3 +131,64 @@ TEST(MemCopy) { buffer2.Dispose(); buffer1.Dispose(); } + + +TEST(Collector) { + Collector<int> collector(8); + const int kLoops = 5; + const int kSequentialSize = 1000; + const int kBlockSize = 7; + for (int loop = 0; loop < kLoops; loop++) { + Vector<int> block = collector.AddBlock(7, 0xbadcafe); + for (int i = 0; i < kSequentialSize; i++) { + collector.Add(i); + } + for (int i = 0; i < kBlockSize - 1; i++) { + block[i] = i * 7; + } + } + Vector<int> result = collector.ToVector(); + CHECK_EQ(kLoops * (kBlockSize + kSequentialSize), result.length()); + for (int i = 0; i < kLoops; i++) { + int offset = i * (kSequentialSize + kBlockSize); + for (int j = 0; j < kBlockSize - 1; j++) { + CHECK_EQ(j * 7, result[offset + j]); + } + CHECK_EQ(0xbadcafe, result[offset + kBlockSize - 1]); + for (int j = 0; j < kSequentialSize; j++) { + CHECK_EQ(j, result[offset + kBlockSize + j]); + } + } + result.Dispose(); +} + + +TEST(SequenceCollector) { + SequenceCollector<int> collector(8); + const int kLoops = 5000; + const int kMaxSequenceSize = 13; + int total_length = 0; + for (int loop = 0; loop < kLoops; loop++) { + int seq_length = loop % kMaxSequenceSize; + collector.StartSequence(); + for (int j = 0; j < seq_length; j++) { + collector.Add(j); + } + Vector<int> sequence = collector.EndSequence(); + for (int j = 0; j < seq_length; j++) { + CHECK_EQ(j, sequence[j]); + } + total_length += seq_length; + } + Vector<int> result = collector.ToVector(); + CHECK_EQ(total_length, result.length()); + int offset = 0; + for (int loop = 0; loop < kLoops; loop++) { + int seq_length = loop % kMaxSequenceSize; + for (int j = 0; j < seq_length; j++) { + CHECK_EQ(j, result[offset]); + offset++; + } + } + result.Dispose(); +} |