diff --git a/src/mesh/ItemType.hpp b/src/mesh/ItemType.hpp
index 1e344f9101892f4dee6113e467e9af7917aa8b62..d37c02fae15120b872c008f939c5d4907debb085 100644
--- a/src/mesh/ItemType.hpp
+++ b/src/mesh/ItemType.hpp
@@ -51,8 +51,8 @@ struct ItemId<1>
         i=0;
         break;
       }
-      case ItemType::face:
       case ItemType::edge:
+      case ItemType::face:
       case ItemType::node: {
         // in 1d, faces, edges and nodes are the same
         i=1;
@@ -73,8 +73,8 @@ struct ItemId<2>
         i=0;
         break;
       }
-      case ItemType::face:
-      case ItemType::edge: {
+      case ItemType::edge:
+      case ItemType::face: {
         // in 2d, faces and edges are the same
         i=1;
         break;
@@ -98,11 +98,11 @@ struct ItemId<3>
         i=0;
         break;
       }
-      case ItemType::face: {
+      case ItemType::edge: {
         i=1;
         break;
       }
-      case ItemType::edge: {
+      case ItemType::face: {
         i=2;
         break;
       }
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 2c1ac56dc2e5ba1886c5efc79709ea6f01deecd4..3b4823f1eaa5d56c7bb2a7e7201d623e8308d60a 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -4,6 +4,7 @@ set(EXECUTABLE_OUTPUT_PATH ${PASTIS_BINARY_DIR})
 
 add_executable (unit_tests
   test_main.cpp
+  test_ItemType.cpp
   test_PastisAssert.cpp
   test_RevisionInfo.cpp
   test_TinyMatrix.cpp
diff --git a/tests/test_ItemType.cpp b/tests/test_ItemType.cpp
new file mode 100644
index 0000000000000000000000000000000000000000..7c39963613dd3bae8d60e5fb4c9a4b0915ce6343
--- /dev/null
+++ b/tests/test_ItemType.cpp
@@ -0,0 +1,48 @@
+#include <catch.hpp>
+
+#include <ItemType.hpp>
+
+TEST_CASE("ItemType", "[connectivity]") {
+
+  ItemType node_type = ItemType::node;
+  ItemType edge_type = ItemType::edge;
+  ItemType face_type = ItemType::face;
+  ItemType cell_type = ItemType::cell;
+
+  SECTION("checking for item type differences") {
+    REQUIRE(((node_type != edge_type) and
+             (node_type != face_type) and
+             (node_type != cell_type) and
+             (edge_type != face_type) and
+             (edge_type != cell_type) and
+             (face_type != cell_type)));
+  }
+
+  SECTION("checking for item type names") {
+    REQUIRE(itemName(node_type)=="node");
+    REQUIRE(itemName(edge_type)=="edge");
+    REQUIRE(itemName(face_type)=="face");
+    REQUIRE(itemName(cell_type)=="cell");
+  }
+
+  SECTION("checking for item ids in 1d") {
+    REQUIRE(ItemId<1>::itemId(cell_type)==0);
+    REQUIRE(ItemId<1>::itemId(edge_type)==1);
+    REQUIRE(ItemId<1>::itemId(face_type)==1);
+    REQUIRE(ItemId<1>::itemId(node_type)==1);
+  }
+
+  SECTION("checking for item ids in 2d") {
+    REQUIRE(ItemId<2>::itemId(cell_type)==0);
+    REQUIRE(ItemId<2>::itemId(edge_type)==1);
+    REQUIRE(ItemId<2>::itemId(face_type)==1);
+    REQUIRE(ItemId<2>::itemId(node_type)==2);
+  }
+
+  SECTION("checking for item ids in 3d") {
+    REQUIRE(ItemId<3>::itemId(cell_type)==0);
+    REQUIRE(ItemId<3>::itemId(edge_type)==1);
+    REQUIRE(ItemId<3>::itemId(face_type)==2);
+    REQUIRE(ItemId<3>::itemId(node_type)==3);
+  }
+}