FieldTest.cpp 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  1. 
  2. #include "../testTools.h"
  3. START_TEST(Field)
  4. {
  5. // Allocate 3 x 2 integers, initialized to 123 in each element.
  6. Field<int> a = Field<int>(3, 2, 123);
  7. ASSERT_EQUAL(a.width(), 3);
  8. ASSERT_EQUAL(a.height(), 2);
  9. ASSERT_EQUAL(string_combine(a),
  10. U"{\n"
  11. U" {\n"
  12. U" 123,\n"
  13. U" 123,\n"
  14. U" 123\n"
  15. U" },\n"
  16. U" {\n"
  17. U" 123,\n"
  18. U" 123,\n"
  19. U" 123\n"
  20. U" }\n"
  21. U"}"
  22. );
  23. // Skip writing outside.
  24. a.write_ignore(-1, 0, 55555);
  25. a.write_ignore(3, 1, 88);
  26. a.write_ignore(0, -1, 999);
  27. a.write_ignore(2, 2, 12345);
  28. // Write inside.
  29. a.write_ignore(0, 0, 11);
  30. a.write_ignore(1, 0, 21);
  31. a.write_ignore(0, 1, 12);
  32. // Copy to b.
  33. Field<int> b = a;
  34. // Write inside.
  35. a.write_ignore(2, 0, 31);
  36. a.write_ignore(1, 1, 22);
  37. a.write_ignore(2, 1, 32);
  38. ASSERT_EQUAL(string_combine(a),
  39. U"{\n"
  40. U" {\n"
  41. U" 11,\n"
  42. U" 21,\n"
  43. U" 31\n"
  44. U" },\n"
  45. U" {\n"
  46. U" 12,\n"
  47. U" 22,\n"
  48. U" 32\n"
  49. U" }\n"
  50. U"}"
  51. );
  52. ASSERT_EQUAL(string_combine(b),
  53. U"{\n"
  54. U" {\n"
  55. U" 11,\n"
  56. U" 21,\n"
  57. U" 123\n"
  58. U" },\n"
  59. U" {\n"
  60. U" 12,\n"
  61. U" 123,\n"
  62. U" 123\n"
  63. U" }\n"
  64. U"}"
  65. );
  66. // Read with border.
  67. ASSERT_EQUAL(a.read_border(-2, -2, 8), 8); // Outside
  68. ASSERT_EQUAL(a.read_border(-1, -2, -1), -1); // Outside
  69. ASSERT_EQUAL(a.read_border(-1, -1, -1), -1); // Outside
  70. ASSERT_EQUAL(a.read_border( 0, -1, -1), -1); // Outside
  71. ASSERT_EQUAL(a.read_border( 0, 0, -2), 11); // Inside
  72. ASSERT_EQUAL(a.read_border( 1, 0, -1), 21); // Inside
  73. ASSERT_EQUAL(a.read_border( 1, 1, 55), 22); // Inside
  74. ASSERT_EQUAL(a.read_border( 2, 1, -1), 32); // Inside
  75. ASSERT_EQUAL(a.read_border( 2, 2, 12), 12); // Outside
  76. ASSERT_EQUAL(a.read_border( 3, 2, -1), -1); // Outside
  77. ASSERT_EQUAL(a.read_border( 3, 3, 13), 13); // Outside
  78. ASSERT_EQUAL(a.read_border( 4, 3, -1), -1); // Outside
  79. // Read with clamping.
  80. ASSERT_EQUAL(a.read_clamp(-2, -2), 11); // Outside
  81. ASSERT_EQUAL(a.read_clamp(-1, -2), 11); // Outside
  82. ASSERT_EQUAL(a.read_clamp(-1, -1), 11); // Outside
  83. ASSERT_EQUAL(a.read_clamp( 0, -1), 11); // Outside
  84. ASSERT_EQUAL(a.read_clamp( 0, 0), 11); // Outside
  85. ASSERT_EQUAL(a.read_clamp( 1, 0), 21); // Inside
  86. ASSERT_EQUAL(a.read_clamp( 1, 1), 22); // Inside
  87. ASSERT_EQUAL(a.read_clamp( 2, 1), 32); // Inside
  88. ASSERT_EQUAL(a.read_clamp( 2, 2), 32); // Outside
  89. ASSERT_EQUAL(a.read_clamp(-1, 2), 12); // Outside
  90. ASSERT_EQUAL(a.read_clamp( 3, 3), 32); // Outside
  91. ASSERT_EQUAL(a.read_clamp( 4, -1), 31); // Outside
  92. // Assign b to a and check that they went from not equal to equal.
  93. ASSERT_NOT_EQUAL(a, b);
  94. a = b;
  95. ASSERT_EQUAL(a, b);
  96. }
  97. END_TEST