value.ncd 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. process main {
  2. value({"A", {"B", "C"}, {{"D"}, "E"}}) v;
  3. val_equal(v, {"A", {"B", "C"}, {{"D"}, "E"}}) a;
  4. assert(a);
  5. v->get("1") w;
  6. val_equal(w, {"B", "C"}) a;
  7. assert(a);
  8. w->delete();
  9. val_equal(v, {"A", {{"D"}, "E"}}) a;
  10. assert(a);
  11. v->getpath({"1", "1"}) f;
  12. val_equal(f, "E") a;
  13. assert(a);
  14. value(["hello":{"Hello", "Good evening!"}, "goodbye":{"Bye", "See you"}]) v;
  15. val_equal(v, ["hello":{"Hello", "Good evening!"}, "goodbye":{"Bye", "See you"}]) a;
  16. assert(a);
  17. val_equal(v.keys, {"goodbye", "hello"}) a;
  18. assert(a);
  19. v->get("hello") h;
  20. val_equal(h, {"Hello", "Good evening!"}) a;
  21. assert(a);
  22. v->get("goodbye") g;
  23. val_equal(g, {"Bye", "See you"}) a;
  24. assert(a);
  25. g->delete();
  26. val_equal(v, ["hello":{"Hello", "Good evening!"}]) a;
  27. assert(a);
  28. h->delete();
  29. val_equal(v, []);
  30. assert(a);
  31. v->delete();
  32. strcmp(v.exists, "false") a;
  33. assert(a);
  34. value({"D", "F", "H"}) v;
  35. v->insert("0", "A") a; # ADFH
  36. v->insert("1", "B") b; # ABDFH
  37. v->insert("5", "I") i; # ABDFHI
  38. val_equal(v, {"A", "B", "D", "F", "H", "I"}) a;
  39. assert(a);
  40. value(["k1":"v1", "k2":"v2", "k3":"v3"]) v;
  41. v->insert("k0", "v0") v0; # k0=v0 k1=v1 k2=v2 k3=v3
  42. v->insert("k0", "V0") V0; # k0=V0 k1=v1 k2=v2 k3=v3
  43. val_equal(v0, "v0") a;
  44. assert(a);
  45. val_equal(V0, "V0") a;
  46. assert(a);
  47. value({"D", "F", "H"}) v;
  48. v->remove("0"); # FH
  49. v->remove("1"); # F
  50. val_equal(v, {"F"}) a;
  51. assert(a);
  52. value(["k1":"v1", "k2":"v2", "k3":"v3"]) v;
  53. v->remove("k1");
  54. v->remove("k3");
  55. val_equal(v, ["k2":"v2"]) a;
  56. assert(a);
  57. value(["k1":"v1", "k2":"v2", "k3":"v3"]) v;
  58. v->try_get("k1") v1;
  59. v->try_get("k7") v7;
  60. val_equal(v1.exists, "true") a;
  61. assert(a);
  62. val_equal(v7.exists, "false") a;
  63. assert(a);
  64. value(["k1":"v1", "k2":"v2", "k3":"v3"]) v;
  65. imperative("<none>", {}, "check1", {}, "10000");
  66. v->insert_undo("k1", "V1") V1;
  67. strcmp(V1, "V1") a;
  68. assert(a);
  69. v->insert_undo("k4", "V4");
  70. v->remove("k2");
  71. val_equal(v, ["k1":"V1", "k3":"v3", "k4":"V4"]) a;
  72. assert(a);
  73. value({"a", "b", "c"}) v;
  74. v->replace("0", "A");
  75. v->replace("1", "B");
  76. v->replace("2", "C");
  77. v->replace("3", "D");
  78. val_equal(v, {"A", "B", "C", "D"}) a;
  79. assert(a);
  80. value({"a", "b", "c"}) v;
  81. imperative("<none>", {}, "check2", {}, "10000");
  82. v->replace_undo("0", "A");
  83. v->replace_undo("1", "B");
  84. v->replace_undo("2", "C");
  85. v->replace_undo("3", "D");
  86. val_equal(v, {"A", "B", "C", "D"}) a;
  87. assert(a);
  88. value("A") v;
  89. v->reset("B");
  90. val_equal(v, "B") a;
  91. assert(a);
  92. value({"a", "c"}) v;
  93. v->insert_undo("1", "b") vb;
  94. val_equal(v, {"a", "b", "c"}) a;
  95. assert(a);
  96. val_equal(vb, "b") a;
  97. assert(a);
  98. vb->reset("B");
  99. val_equal(v, {"a", "c"}) a;
  100. assert(a);
  101. val_equal(vb, "B") a;
  102. assert(a);
  103. value({"a", "b", "c"}) v;
  104. v->get("1") vb;
  105. vb->replace_this("B") vB;
  106. val_equal(vb, "b") a;
  107. assert(a);
  108. val_equal(vB, "B") a;
  109. assert(a);
  110. v->get("1") vB2;
  111. val_equal(vB2, "B") a;
  112. assert(a);
  113. value(["a":"va", "b":"vb", "c":"vc"]) v;
  114. v->get("b") vb;
  115. vb->replace_this("vB") vB;
  116. val_equal(vB, "vB") a;
  117. assert(a);
  118. val_equal(vb, "vb") a;
  119. assert(a);
  120. v->get("b") vB2;
  121. val_equal(vB2, "vB") a;
  122. assert(a);
  123. value({"a", "b", "c"}) v;
  124. v->get("1") vb;
  125. imperative("<none>", {}, "check3", {}, "10000");
  126. vb->replace_this_undo("B") vB;
  127. val_equal(vb, "b") a;
  128. assert(a);
  129. val_equal(vB, "B") a;
  130. assert(a);
  131. v->get("1") vB2;
  132. val_equal(vB2, "B") a;
  133. assert(a);
  134. value(["a":"va", "b":"vb", "c":"vc"]) v;
  135. v->get("b") vb;
  136. imperative("<none>", {}, "check4", {}, "10000");
  137. vb->replace_this_undo("vB") vB;
  138. val_equal(vB, "vB") a;
  139. assert(a);
  140. val_equal(vb, "vb") a;
  141. assert(a);
  142. v->get("b") vB2;
  143. val_equal(vB2, "vB") a;
  144. assert(a);
  145. exit("0");
  146. }
  147. template check1 {
  148. val_equal(_caller.v, ["k1":"v1", "k3":"v3"]) a;
  149. assert(a);
  150. }
  151. template check2 {
  152. val_equal(_caller.v, {"a", "b", "c"}) a;
  153. assert(a);
  154. }
  155. template check3 {
  156. val_equal(_caller.v, {"a", "b", "c"}) a;
  157. assert(a);
  158. }
  159. template check4 {
  160. val_equal(_caller.v, ["a":"va", "b":"vb", "c":"vc"]) a;
  161. assert(a);
  162. }