Index: src/trusted/validator/x86/nc_inst_bytes_tests.cc |
diff --git a/src/trusted/validator/x86/nc_inst_bytes_tests.cc b/src/trusted/validator/x86/nc_inst_bytes_tests.cc |
deleted file mode 100644 |
index 3799c18115839feacb2d4ae93ae2a2d7b3ed5045..0000000000000000000000000000000000000000 |
--- a/src/trusted/validator/x86/nc_inst_bytes_tests.cc |
+++ /dev/null |
@@ -1,181 +0,0 @@ |
-/* |
- * Copyright (c) 2011 The Native Client Authors. All rights reserved. |
- * Use of this source code is governed by a BSD-style license that can be |
- * found in the LICENSE file. |
- */ |
- |
-/* |
- * Unit tests for struct NCInstBytes in ncinstbuffer.{h,cc}. |
- */ |
- |
-#ifndef NACL_TRUSTED_BUT_NOT_TCB |
-#error("This file is not meant for use in the TCB") |
-#endif |
- |
-#include <stdio.h> |
- |
-#include "gtest/gtest.h" |
- |
-#include "native_client/src/trusted/validator/x86/ncinstbuffer.h" |
- |
-namespace { |
- |
-/* Constant defining maximum buffer size for memory. */ |
-const size_t kMaxBufferSize = 30; |
- |
-/* Test harness for class NCRemainingMemory. */ |
-class NCInstBytesTests : public ::testing::Test { |
- protected: |
- void SetUp(); |
- NCInstBytesTests(); |
- |
- /* Data for testing. */ |
- NCInstBytes _bytes; /* Inst bytes (read). */ |
- NCRemainingMemory _memory; /* Memory being tested. */ |
- uint8_t _buffer[kMaxBufferSize]; /* Memory buffer to use. */ |
- const size_t _buffer_size; /* Actually size of test data. */ |
- static const char* kTestData; /* Data put into memory for testing. */ |
- |
- /* Verify if the contents of kTestData matches the contents |
- * of _bytes, up to _buffer_size; Remaining elements are zero. |
- */ |
- void VerifyBytesMatchTestData(); |
-}; |
- |
-const char* NCInstBytesTests::kTestData = "Test data"; |
- |
-NCInstBytesTests::NCInstBytesTests() |
- : _buffer_size(strlen(kTestData)) { |
- /* Fill memory buffer with bad test data, so that we know if bad accesses |
- * occur past the end of the buffer. |
- */ |
- for (size_t i = 0; i < kMaxBufferSize; ++i) { |
- _buffer[i] = 'X'; |
- } |
- /* Now fill in the good test data. */ |
- for (size_t i = 0; i < _buffer_size; ++i) { |
- _buffer[i] = (uint8_t) kTestData[i]; |
- } |
-} |
- |
-void NCInstBytesTests::VerifyBytesMatchTestData() { |
- /* First show that while there is real data in the memory, |
- * it has been copied to the bytes buffer. |
- */ |
- size_t match_limit = |
- (_bytes.length <= _buffer_size) ? _bytes.length : _buffer_size; |
- for (size_t i = 0; i < match_limit; ++i) { |
- EXPECT_EQ(_bytes.byte[i], kTestData[i]) |
- << "value verification of byte " << i; |
- } |
- /* Now show that any remaining bytes (after the memory |
- * has been read) are 0. |
- */ |
- for (size_t i = match_limit; i < _bytes.length; ++i) { |
- EXPECT_EQ(0, _bytes.byte[i]) |
- << "zero verification of byte " << i; |
- } |
-} |
- |
-void NCInstBytesTests::SetUp() { |
- NCRemainingMemoryInit(_buffer, _buffer_size, &_memory); |
- NCInstBytesInitMemory(&_bytes, &_memory); |
- /* Be sure to verify that we can run the tests, which require |
- * a couple of extra slots for overflow. |
- */ |
- ASSERT_LT(_buffer_size + 1, (size_t) MAX_INST_LENGTH) |
- << "Set up failed due to kTestData being too long."; |
-} |
- |
-/* Test function NCInstBytesPeek, and see if it properly sees the data in |
- * the instruction buffer. |
- */ |
-TEST_F(NCInstBytesTests, PeekGetsData) { |
- /* First verify that we get text as defined in the test data. */ |
- for (size_t i = 0; i < _buffer_size; ++i) { |
- EXPECT_EQ(NCInstBytesPeek(&_bytes, i), (uint8_t) kTestData[i]) |
- << "peeking " << i << " bytes ahead."; |
- } |
- /* Now verify that if we look past the end of the data, we |
- * get 0. |
- */ |
- EXPECT_EQ(0, NCInstBytesPeek(&_bytes, _buffer_size)) |
- << "peeking one byte past end of buffer."; |
- EXPECT_EQ(0, NCInstBytesPeek(&_bytes, _buffer_size + 100)) |
- << "peeking 100 bytes past end of buffer."; |
- EXPECT_EQ(0, _bytes.length); |
- VerifyBytesMatchTestData(); |
-} |
- |
-/* Test function NCInstBytesRead, and see if it properly read |
- * data from the memory buffer. |
- */ |
-TEST_F(NCInstBytesTests, ReadGetsData) { |
- /* First verify that we get text as defined in the test data. */ |
- for (size_t i = 0; i < _buffer_size; ++i) { |
- EXPECT_EQ(NCInstBytesRead(&_bytes), (uint8_t) kTestData[i]) |
- << "after reading " << i << " characters"; |
- VerifyBytesMatchTestData(); |
- } |
- EXPECT_EQ(_buffer_size, _bytes.length); |
- VerifyBytesMatchTestData(); |
- /* Now verify that zero is returned for any additional reads. */ |
- for (size_t i = _bytes.length; i < MAX_INST_LENGTH; ++i) { |
- EXPECT_EQ(0, NCInstBytesRead(&_bytes)) |
- << "after reading all characters"; |
- } |
- VerifyBytesMatchTestData(); |
- /* Verify that we can apply a read, even if buffer overflow occurs, |
- * and the only effect is that the buffer length is not increased. |
- */ |
- EXPECT_EQ(MAX_INST_LENGTH, _bytes.length); |
- EXPECT_EQ(0, NCInstBytesRead(&_bytes)); |
- EXPECT_EQ(MAX_INST_LENGTH, _bytes.length); |
-} |
- |
-/* Test function NCInstBytesReadBytes, and see if it properly reads |
- * data from the memory buffer. |
- */ |
-TEST_F(NCInstBytesTests, ReadBytesGetsData) { |
- /* First verify that we get text as defined in the test data. */ |
- size_t chars_read = 0; |
- size_t stride = 4; |
- VerifyBytesMatchTestData(); |
- while (chars_read < MAX_INST_LENGTH) { |
- if ((chars_read + stride) > MAX_INST_LENGTH) { |
- stride = MAX_INST_LENGTH - chars_read; |
- } |
- NCInstBytesReadBytes(stride, &_bytes); |
- chars_read += stride; |
- VerifyBytesMatchTestData(); |
- } |
- /* Verify that we can apply additional reads without overflowing |
- * the buffer. |
- */ |
- NCInstBytesReadBytes(2, &_bytes); |
- EXPECT_EQ(MAX_INST_LENGTH, _bytes.length) << "Buffer overflow fix failed."; |
-} |
- |
-/* Test function NCInstBytesReset, and see if we back up to |
- * the beginning of the instruction. |
- */ |
-TEST_F(NCInstBytesTests, Reset) { |
- /* First read some bytes into the bytes buffer. */ |
- NCInstBytesReadBytes(5, &_bytes); |
- VerifyBytesMatchTestData(); |
- /* Now reset and see if we moved back. */ |
- NCInstBytesReset(&_bytes); |
- EXPECT_EQ(0, _bytes.length) << "Reset didn't fix buffer length."; |
- VerifyBytesMatchTestData(); |
- EXPECT_EQ(0, _memory.read_length) << "Reset didn't fix memory length."; |
- EXPECT_EQ(0, _memory.overflow_count) << "Reset didn't fix memory overflow."; |
- EXPECT_EQ((void*) _buffer, (void*) _memory.cur_pos) |
- << "Reset did not reset memory."; |
-} |
- |
-}; // anonymous namespace |
- |
-int main(int argc, char *argv[]) { |
- testing::InitGoogleTest(&argc, argv); |
- return RUN_ALL_TESTS(); |
-} |