aboutsummaryrefslogtreecommitdiff
path: root/tests/cmi_tests.cpp
diff options
context:
space:
mode:
authorLoic Guegan <manzerbredes@mailbox.org>2023-01-19 11:39:51 +0100
committerLoic Guegan <manzerbredes@mailbox.org>2023-01-19 11:39:51 +0100
commit720c394c50e7cb79e6403c408b40dfe8d994230a (patch)
tree2ee920f9290bad13211c704b73ef8cc8f6c05804 /tests/cmi_tests.cpp
parent31d28a6cdaa55ff15dd5f532d4753199b0aa94ca (diff)
Improve overall interface
Diffstat (limited to 'tests/cmi_tests.cpp')
-rw-r--r--tests/cmi_tests.cpp79
1 files changed, 69 insertions, 10 deletions
diff --git a/tests/cmi_tests.cpp b/tests/cmi_tests.cpp
index 1c84c40..a44b31a 100644
--- a/tests/cmi_tests.cpp
+++ b/tests/cmi_tests.cpp
@@ -3,21 +3,80 @@
using namespace CMI;
-#define NEW_MOVE(VAR,SAN) HalfMove *(VAR)=new HalfMove(); (VAR)->SetSAN((SAN));
+#define NEW_MOVE(VAR, SAN) \
+ HalfMove *(VAR) = new HalfMove(); \
+ (VAR)->SetSAN((SAN));
+HalfMove *BuildTree() {
+ // Move 1
+ NEW_MOVE(m1, "e4");
+ NEW_MOVE(m2, "e5");
+ m1->SetMainline(m2);
+ // Move 2
+ NEW_MOVE(m3, "Nf3");
+ NEW_MOVE(m4, "Nc6");
+ m2->SetMainline(m3);
+ m3->SetMainline(m4);
+ // Move 3 Ponziani :D
+ NEW_MOVE(m5, "c3");
+ NEW_MOVE(m6, "Nf6");
+ m4->SetMainline(m5);
+ m5->SetMainline(m6);
+ // Move 4 Ponziani :D
+ NEW_MOVE(m7, "d4");
+ NEW_MOVE(m8, "exd4");
+ m5->SetMainline(m7);
+ m7->SetMainline(m8);
+ // Move 4 Variation
+ NEW_MOVE(m8bis, "Nxe4");
+ m8->AddVariation(m8bis);
+ return m1;
+}
+
+TEST_CASE("CMI Tests Numbers", "[numbers]") {
+ HalfMove *m = BuildTree();
+ CHECK(m->IsConsistent());
-HalfMove *BuildTree(){
- NEW_MOVE(m1,"e4");
- NEW_MOVE(m2,"e5");
- m1->SetMainline(m2);
- return m1;
+ CHECK(m->GetNumber() == 1);
+ CHECK(m->GetMainline()->GetNumber() == 1);
+ CHECK(m->GetMainline()->GetMainline()->GetNumber() == 2);
}
+TEST_CASE("CMI Tests Consistancy", "[IsConsistent/bindorder]") {
+ // In mainline
+ NEW_MOVE(m1, "e4");
+ NEW_MOVE(m2, "e5");
+ m1->SetMainline(m2);
+ NEW_MOVE(m3, "Nf3");
+ NEW_MOVE(m4, "Nc6");
+ m3->SetMainline(m4); // Should normally be done after next line
+ m2->SetMainline(m3);
+ CHECK(!m1->IsConsistent());
-TEST_CASE("CMI Tests", "[valid]") {
- HalfMove *m=BuildTree();
+ // In variations
+ NEW_MOVE(n1, "e4");
+ NEW_MOVE(n2, "e5");
+ n1->SetMainline(n2);
+ NEW_MOVE(n3, "c6");
+ n2->AddVariation(n3);
+ n3->SetNumber(4);
+ CHECK(!n1->IsConsistent());
+}
-CHECK(m->GetNumber()==1);
-CHECK(m->GetMainline()->GetNumber()==1);
+TEST_CASE("CMI Tests Consistancy", "[IsConsistent/isBlack]") {
+ // In mainline
+ NEW_MOVE(m1, "e4");
+ NEW_MOVE(m2, "e5");
+ m1->SetMainline(m2);
+ m2->SetIsBlack(false);
+ CHECK(!m1->IsConsistent());
+ // In variation
+ NEW_MOVE(n1, "e4");
+ NEW_MOVE(n2, "e5");
+ n1->SetMainline(n2);
+ NEW_MOVE(n3, "c6");
+ n2->AddVariation(n3);
+ n3->SetIsBlack(false);
+ CHECK(!n1->IsConsistent());
} \ No newline at end of file