test_tb_parser.cpp 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. // ================================================================================
  2. // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås ==
  3. // == See tb_core.h for more information. ==
  4. // ================================================================================
  5. #include "tb_test.h"
  6. #include "tb_node_tree.h"
  7. #ifdef TB_UNIT_TESTING
  8. using namespace tb;
  9. TB_TEST_GROUP(tb_parser)
  10. {
  11. TBNode node;
  12. TB_TEST(Init)
  13. {
  14. TB_VERIFY(node.ReadFile(TB_TEST_FILE("test_tb_parser.tb.txt")));
  15. }
  16. TB_TEST(strings)
  17. {
  18. TB_VERIFY_STR(node.GetValueString("strings>string1", ""), "A string");
  19. TB_VERIFY_STR(node.GetValueString("strings>string2", ""), "\"A string\"");
  20. TB_VERIFY_STR(node.GetValueString("strings>string3", ""), "\'A string\'");
  21. TB_VERIFY_STR(node.GetValueString("strings>string4", ""), "\"\'A string\'\"");
  22. TB_VERIFY_STR(node.GetValueString("strings>string5", ""), "Foo\nBar");
  23. }
  24. TB_TEST(strings_compact)
  25. {
  26. TB_VERIFY_STR(node.GetValueString("strings_compact>string1", ""), "");
  27. TB_VERIFY_STR(node.GetValueString("strings_compact>string2", ""), "A string");
  28. TB_VERIFY_STR(node.GetValueString("strings_compact>string3", ""), "A string");
  29. TB_VERIFY_STR(node.GetValueString("strings_compact>string4", ""), "'A string'");
  30. TB_VERIFY_STR(node.GetValueString("strings_compact>string5", ""), "\"A string\"");
  31. TB_VERIFY_STR(node.GetValueString("strings_compact>string6", ""), "\"A string\"");
  32. TB_VERIFY_STR(node.GetValueString("strings_compact>string7", ""), "\\");
  33. TB_VERIFY_STR(node.GetValueString("strings_compact>string8", ""), "\"");
  34. TB_VERIFY_STR(node.GetValueString("strings_compact>string9", ""), "\\\\\\\\");
  35. TB_VERIFY_STR(node.GetValueString("strings_compact>string10", ""), "\\\\\"");
  36. TB_VERIFY_STR(node.GetValueString("strings_compact>string11", ""), "\"\"\'\'");
  37. TB_VERIFY_STR(node.GetValueStringRaw("strings_compact>string12", ""), "@language_string_token");
  38. TB_VERIFY_STR(node.GetValueString("strings_compact>string13", ""), "#ffdd00");
  39. }
  40. TB_TEST(numbers)
  41. {
  42. TB_VERIFY(node.GetValueInt("numbers>integer1", 0) == 42);
  43. TB_VERIFY_FLOAT(node.GetValueFloat("numbers>float1", 0), 1.1);
  44. TB_VERIFY(node.GetValueInt("numbers>integer2", 0) == 42);
  45. TB_VERIFY_FLOAT(node.GetValueFloat("numbers>float2", 0), 1.1);
  46. }
  47. TB_TEST(numbers_compact)
  48. {
  49. TB_VERIFY(node.GetValueInt("numbers_compact>integer1", 0) == -10);
  50. TB_VERIFY(node.GetValueInt("numbers_compact>integer2", 0) == -10);
  51. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_compact>float1", 0), 1.0);
  52. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_compact>float2", 0), -1.0);
  53. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_compact>float3", 0), -.2);
  54. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_compact>float4", 0), -.2);
  55. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_compact>float5", 0), 1.1);
  56. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_compact>float6", 0), 1.1);
  57. }
  58. TB_TEST(numbers_with_unit)
  59. {
  60. TB_VERIFY(node.GetValueInt("numbers_with_unit>number1", 0) == 10);
  61. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number1", ""), "10px");
  62. TB_VERIFY(node.GetValueInt("numbers_with_unit>number2", 0) == -10);
  63. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number2", ""), "-10px");
  64. TB_VERIFY(node.GetValueInt("numbers_with_unit>number3", 0) == 10);
  65. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number3", ""), "10px");
  66. TB_VERIFY(node.GetValueInt("numbers_with_unit>number4", 0) == -10);
  67. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number4", ""), "-10px");
  68. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_with_unit>number5", 0), -2.1);
  69. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number5", ""), "-2.1px");
  70. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_with_unit>number6", 0), -.1);
  71. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number6", ""), "-.1px");
  72. TB_VERIFY_FLOAT(node.GetValueFloat("numbers_with_unit>number7", 0), 1.f);
  73. TB_VERIFY_STR(node.GetValueString("numbers_with_unit>number7", ""), "1px ");
  74. }
  75. TB_TEST(compact_with_children)
  76. {
  77. TB_VERIFY_STR(node.GetValueString("compact_with_children>string", ""), "A string");
  78. TB_VERIFY_STR(node.GetValueString("compact_with_children>string>child1", ""), "Child 1");
  79. TB_VERIFY_STR(node.GetValueString("compact_with_children>string>child2", ""), "Child 2");
  80. TB_VERIFY(node.GetValueInt("compact_with_children>integer", 0) == -10);
  81. TB_VERIFY(node.GetValueInt("compact_with_children>integer>child1", 0) == 1);
  82. TB_VERIFY(node.GetValueInt("compact_with_children>integer>child2", 0) == 2);
  83. TB_VERIFY_FLOAT(node.GetValueFloat("compact_with_children>float", 0), 1);
  84. TB_VERIFY_FLOAT(node.GetValueFloat("compact_with_children>float>child1", 0), 1);
  85. TB_VERIFY_FLOAT(node.GetValueFloat("compact_with_children>float>child2", 0), 2);
  86. }
  87. TB_TEST(compact_no_value)
  88. {
  89. TB_VERIFY_STR(node.GetValueString("compact_no_value>string", ""), "A string");
  90. TB_VERIFY(node.GetValueInt("compact_no_value>int", 0) == 42);
  91. TB_VERIFY_FLOAT(node.GetValueFloat("compact_no_value>float", 0), 3.14);
  92. TB_VERIFY_STR(node.GetValueString("compact_no_value>subgroup>string1", ""), "A string, with \"comma\"");
  93. TB_VERIFY_STR(node.GetValueString("compact_no_value>subgroup>string2", ""), "'Another string'");
  94. TB_VERIFY_STR(node.GetValueString("compact_no_value>subgroup>string3", ""), "And another string");
  95. }
  96. TB_TEST(arrays_numbers)
  97. {
  98. TBNode *arr_n = node.GetNode("arrays>numbers");
  99. TB_VERIFY(arr_n);
  100. TB_VERIFY(arr_n->GetValue().GetArrayLength() == 5);
  101. TBValueArray *arr = arr_n->GetValue().GetArray();
  102. TB_VERIFY(arr->GetValue(0)->GetInt() == 1);
  103. TB_VERIFY(arr->GetValue(1)->GetInt() == 2);
  104. TB_VERIFY_FLOAT(arr->GetValue(2)->GetFloat(), 0.5);
  105. TB_VERIFY_FLOAT(arr->GetValue(3)->GetFloat(), 1.0E-8);
  106. TB_VERIFY(arr->GetValue(4)->GetInt() == 1000000000);
  107. }
  108. TB_TEST(arrays_dimensions)
  109. {
  110. TBNode *arr_n = node.GetNode("arrays>dimensions");
  111. TB_VERIFY(arr_n);
  112. TB_VERIFY(arr_n->GetValue().GetArrayLength() == 2);
  113. TBValueArray *arr = arr_n->GetValue().GetArray();
  114. TB_VERIFY(arr->GetValue(0)->GetInt() == 1);
  115. TB_VERIFY(arr->GetValue(1)->GetInt() == 2);
  116. }
  117. //FIX: Not supported yet
  118. // TB_TEST(arrays_strings)
  119. // {
  120. // TBNode *arr_n = node.GetNode("arrays>strings");
  121. // TB_VERIFY(arr_n);
  122. // TB_VERIFY(arr_n->GetValue().GetArrayLength() == 5);
  123. // TBValueArray *arr = arr_n->GetValue().GetArray();
  124. // TB_VERIFY_STR(arr->GetValue(0)->GetString(), "Foo");
  125. // TB_VERIFY_STR(arr->GetValue(1)->GetString(), "'Foo'");
  126. // TB_VERIFY_STR(arr->GetValue(2)->GetString(), "Foo");
  127. // TB_VERIFY_STR(arr->GetValue(3)->GetString(), "\"Foo\"");
  128. // TB_VERIFY_STR(arr->GetValue(4)->GetString(), "Foo 'bar'");
  129. // }
  130. //
  131. // TB_TEST(arrays_mixed)
  132. // {
  133. // TBNode *arr_n = node.GetNode("arrays>mixed");
  134. // TB_VERIFY(arr_n);
  135. // TB_VERIFY(arr_n->GetValue().GetArrayLength() == 4);
  136. // TBValueArray *arr = arr_n->GetValue().GetArray();
  137. // TB_VERIFY_STR(arr->GetValue(0)->GetString(), "Foo");
  138. // TB_VERIFY(arr->GetValue(1)->GetInt() == 2);
  139. // TB_VERIFY_STR(arr->GetValue(2)->GetString(), "bar");
  140. // TB_VERIFY(arr->GetValue(3)->GetFloat() == 4.0f);
  141. // }
  142. TB_TEST(strings_multiline)
  143. {
  144. TB_VERIFY_STR(node.GetValueString("strings_multiline>string1", ""), "Line 1\nLine 2\nLine 3");
  145. TB_VERIFY_STR(node.GetValueString("strings_multiline>string2", ""), "abc");
  146. TB_VERIFY_STR(node.GetValueString("strings_multiline>string3", ""), "AB");
  147. TB_VERIFY_STR(node.GetValueString("strings_multiline>string4", ""), "Line 1\nLine 2\nLine 3\n");
  148. TB_VERIFY_STR(node.GetValueString("strings_multiline>subgroup>first", ""), "Foo");
  149. TB_VERIFY_STR(node.GetValueString("strings_multiline>subgroup>second", ""), "AB");
  150. TB_VERIFY_STR(node.GetValueString("strings_multiline>string5", ""), "The last string");
  151. }
  152. TB_TEST(comments_and_space)
  153. {
  154. TB_VERIFY(node.GetValueInt("comments_and_space>one", 0) == 1);
  155. TB_VERIFY(node.GetValueInt("comments_and_space>two", 0) == 2);
  156. TB_VERIFY(node.GetValueInt("comments_and_space>three", 0) == 3);
  157. }
  158. TB_TEST(include_file)
  159. {
  160. TB_VERIFY_STR(node.GetValueString("include_file>file1>something1", ""), "Chocolate");
  161. TB_VERIFY_STR(node.GetValueString("include_file>file1>something2", ""), "Cake");
  162. TB_VERIFY_STR(node.GetValueString("include_file>file2>something1", ""), "Chocolate");
  163. TB_VERIFY_STR(node.GetValueString("include_file>file2>something2", ""), "Cake");
  164. }
  165. TB_TEST(include_locally)
  166. {
  167. TB_VERIFY_STR(node.GetValueString("include_branch>test1>skin", ""), "DarkSkin");
  168. TB_VERIFY_STR(node.GetValueString("include_branch>test2>skin", ""), "LightSkin");
  169. }
  170. TB_TEST(conditions)
  171. {
  172. TB_VERIFY(node.GetValueInt("conditions>value", 0) == 42);
  173. }
  174. // More coverage in test_tb_node_ref_tree.cpp...
  175. }
  176. #endif // TB_UNIT_TESTING