diff enigma/tests/test_plugboard.t.h @ 9:7362965f53b1

Added tests for the hill climbing functions in the plugboard class.
author Brian Neal <bgneal@gmail.com>
date Fri, 29 Jun 2012 21:19:00 -0500
parents f4e25e6b76c3
children 232dbe7a3fe0
line wrap: on
line diff
--- a/enigma/tests/test_plugboard.t.h	Fri Jun 29 20:29:41 2012 -0500
+++ b/enigma/tests/test_plugboard.t.h	Fri Jun 29 21:19:00 2012 -0500
@@ -4,6 +4,7 @@
 //
 // test_plugboard.t.h - Unit tests for the plugboard class.
 
+#include <algorithm>
 #include <cxxtest/TestSuite.h>
 #include "plugboard.h"
 
@@ -138,4 +139,172 @@
       plugboard p{stecker};
       TS_ASSERT_EQUALS(stecker, p.navy_str());
    }
+
+   void test_get_wiring()
+   {
+      plugboard pb;
+      alpha_int_array w(pb.get_wiring());
+
+      for (int i = 0; i < 26; ++i)
+      {
+         TS_ASSERT_EQUALS(w[i], i);
+      }
+
+      pb.connect(0, 1);
+      pb.connect(8, 20);
+      pb.connect(24, 25);
+      for (int i = 0; i < 26; ++i)
+      {
+         w[i] = i;
+      }
+      std::swap(w[0], w[1]);
+      std::swap(w[8], w[20]);
+      std::swap(w[24], w[25]);
+
+      alpha_int_array w1(pb.get_wiring());
+      for (int i = 0; i < 26; ++i)
+      {
+         TS_ASSERT_EQUALS(w[i], w1[i]);
+      }
+   }
+
+   void test_set_wiring()
+   {
+      alpha_int_array w;
+      for (int i = 0; i < 26; ++i)
+      {
+         w[i] = i;
+      }
+      std::swap(w[0], w[1]);
+      std::swap(w[8], w[20]);
+      std::swap(w[24], w[25]);
+
+      plugboard pb;
+      pb.set_wiring(w);
+
+      alpha_int_array w2 = pb.get_wiring();
+      TS_ASSERT_EQUALS(w, w2);
+   }
+
+   void test_is_wired()
+   {
+      plugboard pb;
+      pb.connect(0, 25);
+      pb.connect(4, 18);
+      for (int i = 0; i < 26; ++i)
+      {
+         if (i == 0 || i == 25 || i == 4 || i == 18)
+         {
+            TS_ASSERT(pb.is_wired(i));
+         }
+         else
+         {
+            TS_ASSERT(!pb.is_wired(i));
+         }
+      }
+   }
+
+   void test_is_free()
+   {
+      plugboard pb;
+      pb.connect(0, 25);
+      pb.connect(4, 18);
+      for (int i = 0; i < 26; ++i)
+      {
+         if (i == 0 || i == 25 || i == 4 || i == 18)
+         {
+            TS_ASSERT(!pb.is_free(i));
+         }
+         else
+         {
+            TS_ASSERT(pb.is_free(i));
+         }
+      }
+   }
+
+   void test_disconnect()
+   {
+      plugboard pb;
+      pb.connect(0, 25);
+      pb.connect(4, 18);
+      pb.disconnect(0);
+      pb.disconnect(18);
+      for (int i = 0; i < 26; ++i)
+      {
+         TS_ASSERT(pb.is_free(i));
+      }
+   }
+
+   void test_disconnect2()
+   {
+      plugboard pb;
+      for (int i = 0; i < 26; ++i)
+      {
+         pb.disconnect(i);
+      }
+      for (int i = 0; i < 26; ++i)
+      {
+         TS_ASSERT(pb.is_free(i));
+      }
+   }
+
+   void test_connect()
+   {
+      plugboard pb;
+      pb.connect(2, 4);
+      pb.connect(17, 20);
+      for (int i = 0; i < 26; ++i)
+      {
+         if (i == 2 || i == 4 || i == 17 || i == 20)
+         {
+            TS_ASSERT(pb.is_wired(i));
+         }
+         else
+         {
+            TS_ASSERT(pb.is_free(i));
+         }
+      }
+      pb.connect(20, 25);
+      for (int i = 0; i < 26; ++i)
+      {
+         if (i == 2 || i == 4 || i == 25 || i == 20)
+         {
+            TS_ASSERT(pb.is_wired(i));
+         }
+         else
+         {
+            TS_ASSERT(pb.is_free(i));
+         }
+      }
+   }
+
+   void test_is_connected()
+   {
+      plugboard pb;
+      pb.connect(5, 7);
+      pb.connect(1, 20);
+      TS_ASSERT(pb.is_connected(5, 7));
+      TS_ASSERT(pb.is_connected(1, 20));
+
+      for (int i = 0; i < 26; ++i)
+      {
+         if (i == 7)
+         {
+            TS_ASSERT(pb.is_connected(5, i));
+         }
+         else
+         {
+            TS_ASSERT(!pb.is_connected(5, i));
+         }
+         if (i == 1)
+         {
+            TS_ASSERT(pb.is_connected(20, i));
+         }
+         else
+         {
+            TS_ASSERT(!pb.is_connected(20, i));
+         }
+      }
+   }
+
 };