diff --git a/test/test_topology.cpp b/test/test_topology.cpp
index b3e4d0c..6b9317b 100644
--- a/test/test_topology.cpp
+++ b/test/test_topology.cpp
@@ -55,7 +55,7 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, EmptyExposes)
@@ -68,7 +68,7 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, MissingConnectsTo)
@@ -90,7 +90,7 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, OtherExposes)
@@ -103,7 +103,7 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, NoMatchSubchassis)
@@ -117,7 +117,7 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, NoMatchSuperchassis)
@@ -130,7 +130,7 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, Basic)
@@ -144,8 +144,8 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 1);
-    EXPECT_EQ(assocs[subchassisPath].size(), 1);
+    EXPECT_EQ(assocs.size(), 1U);
+    EXPECT_EQ(assocs[subchassisPath].size(), 1U);
     EXPECT_EQ(assocs[subchassisPath][0], subchassisAssoc);
 }
 
@@ -160,10 +160,10 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 2);
-    EXPECT_EQ(assocs[subchassisPath].size(), 1);
+    EXPECT_EQ(assocs.size(), 2U);
+    EXPECT_EQ(assocs[subchassisPath].size(), 1U);
     EXPECT_EQ(assocs[subchassisPath][0], subchassisAssoc);
-    EXPECT_EQ(assocs[superchassisPath].size(), 1);
+    EXPECT_EQ(assocs[superchassisPath].size(), 1U);
     EXPECT_EQ(assocs[superchassisPath][0], powerAssoc);
 }
 
@@ -179,7 +179,7 @@
     // Boards A and B aren't new, so no assocs are returned.
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 0);
+    EXPECT_EQ(assocs.size(), 0U);
 }
 
 TEST(Topology, 2Subchassis)
@@ -197,10 +197,10 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 2);
-    EXPECT_EQ(assocs[subchassisPath].size(), 1);
+    EXPECT_EQ(assocs.size(), 2U);
+    EXPECT_EQ(assocs[subchassisPath].size(), 1U);
     EXPECT_EQ(assocs[subchassisPath][0], subchassisAssoc);
-    EXPECT_EQ(assocs[subchassisPath + "2"].size(), 1);
+    EXPECT_EQ(assocs[subchassisPath + "2"].size(), 1U);
     EXPECT_EQ(assocs[subchassisPath + "2"][0], subchassisAssoc);
 }
 
@@ -218,8 +218,8 @@
     // Only the assoc for BoardA should be returned
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 1);
-    EXPECT_EQ(assocs[subchassisPath].size(), 1);
+    EXPECT_EQ(assocs.size(), 1U);
+    EXPECT_EQ(assocs[subchassisPath].size(), 1U);
     EXPECT_EQ(assocs[subchassisPath][0], subchassisAssoc);
 }
 
@@ -241,8 +241,8 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 1);
-    EXPECT_EQ(assocs[subchassisPath].size(), 2);
+    EXPECT_EQ(assocs.size(), 1U);
+    EXPECT_EQ(assocs[subchassisPath].size(), 2U);
 
     EXPECT_THAT(assocs[subchassisPath],
                 UnorderedElementsAre(subchassisAssoc, subchassisAssoc2));
@@ -269,9 +269,9 @@
 
     auto assocs = topo.getAssocs(boards);
 
-    EXPECT_EQ(assocs.size(), 2);
-    EXPECT_EQ(assocs[subchassisPath].size(), 2);
-    EXPECT_EQ(assocs[subchassisPath + "2"].size(), 2);
+    EXPECT_EQ(assocs.size(), 2U);
+    EXPECT_EQ(assocs[subchassisPath].size(), 2U);
+    EXPECT_EQ(assocs[subchassisPath + "2"].size(), 2U);
 
     EXPECT_THAT(assocs[subchassisPath],
                 UnorderedElementsAre(subchassisAssoc, subchassisAssoc2));
@@ -295,10 +295,10 @@
     {
         auto assocs = topo.getAssocs(boards);
 
-        EXPECT_EQ(assocs.size(), 2);
-        EXPECT_EQ(assocs[subchassisPath].size(), 1);
+        EXPECT_EQ(assocs.size(), 2U);
+        EXPECT_EQ(assocs[subchassisPath].size(), 1U);
         EXPECT_EQ(assocs[subchassisPath][0], subchassisAssoc);
-        EXPECT_EQ(assocs[subchassisPath + "2"].size(), 1);
+        EXPECT_EQ(assocs[subchassisPath + "2"].size(), 1U);
         EXPECT_EQ(assocs[subchassisPath + "2"][0], subchassisAssoc);
     }
 
@@ -306,8 +306,8 @@
         topo.remove("BoardA");
         auto assocs = topo.getAssocs(boards);
 
-        EXPECT_EQ(assocs.size(), 1);
-        EXPECT_EQ(assocs[subchassisPath + "2"].size(), 1);
+        EXPECT_EQ(assocs.size(), 1U);
+        EXPECT_EQ(assocs[subchassisPath + "2"].size(), 1U);
         EXPECT_EQ(assocs[subchassisPath + "2"][0], subchassisAssoc);
     }
 
@@ -315,6 +315,6 @@
         topo.remove("BoardB");
         auto assocs = topo.getAssocs(boards);
 
-        EXPECT_EQ(assocs.size(), 0);
+        EXPECT_EQ(assocs.size(), 0U);
     }
 }
