FieldTest.cpp 2.8 KB

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