diff --git a/src/dawn/CPPLINT.cfg b/src/dawn/CPPLINT.cfg
index 4f810e8..f819f37 100644
--- a/src/dawn/CPPLINT.cfg
+++ b/src/dawn/CPPLINT.cfg
@@ -2,7 +2,6 @@
 filter=-build/include_what_you_use
 filter=-build/namespaces
 filter=-readability/casting
-filter=-readability/check
 filter=-readability/namespace
 filter=-readability/todo
 filter=-runtime/arrays
diff --git a/src/dawn/tests/unittests/d3d12/CopySplitTests.cpp b/src/dawn/tests/unittests/d3d12/CopySplitTests.cpp
index 75f088b..f368ffc 100644
--- a/src/dawn/tests/unittests/d3d12/CopySplitTests.cpp
+++ b/src/dawn/tests/unittests/d3d12/CopySplitTests.cpp
@@ -142,7 +142,7 @@
     // Check that the union of the copy regions exactly covers the texture region
     void ValidateTextureBounds(const TextureSpec& textureSpec,
                                const TextureCopySubresource& copySplit) {
-        ASSERT_TRUE(copySplit.count > 0);
+        ASSERT_GT(copySplit.count, 0u);
 
         uint32_t minX = copySplit.copies[0].textureOffset.x;
         uint32_t minY = copySplit.copies[0].textureOffset.y;
@@ -190,7 +190,7 @@
                               const BufferSpec& bufferSpec,
                               const TextureCopySubresource& copySplit,
                               wgpu::TextureDimension dimension) {
-        ASSERT_TRUE(copySplit.count > 0);
+        ASSERT_GT(copySplit.count, 0u);
 
         uint32_t texelsPerBlock = textureSpec.blockWidth * textureSpec.blockHeight;
         for (uint32_t i = 0; i < copySplit.count; ++i) {
diff --git a/src/dawn/tests/white_box/D3D12ResourceHeapTests.cpp b/src/dawn/tests/white_box/D3D12ResourceHeapTests.cpp
index 4ad2eac..57f9c7e 100644
--- a/src/dawn/tests/white_box/D3D12ResourceHeapTests.cpp
+++ b/src/dawn/tests/white_box/D3D12ResourceHeapTests.cpp
@@ -88,8 +88,9 @@
     wgpu::Buffer buffer = device.CreateBuffer(&descriptor);
     Buffer* d3dBuffer = reinterpret_cast<Buffer*>(buffer.Get());
 
-    EXPECT_TRUE((d3dBuffer->GetD3D12Resource()->GetDesc().Width %
-                 static_cast<uint64_t>(D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT)) == 0u);
+    EXPECT_EQ((d3dBuffer->GetD3D12Resource()->GetDesc().Width %
+               static_cast<uint64_t>(D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT)),
+              0u);
 
     // Create a larger UBO
     descriptor.size = (4 * 1024 * 1024) + 255;
@@ -98,8 +99,9 @@
     buffer = device.CreateBuffer(&descriptor);
     d3dBuffer = reinterpret_cast<Buffer*>(buffer.Get());
 
-    EXPECT_TRUE((d3dBuffer->GetD3D12Resource()->GetDesc().Width %
-                 static_cast<uint64_t>(D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT)) == 0u);
+    EXPECT_EQ((d3dBuffer->GetD3D12Resource()->GetDesc().Width %
+               static_cast<uint64_t>(D3D12_CONSTANT_BUFFER_DATA_PLACEMENT_ALIGNMENT)),
+              0u);
 }
 
 DAWN_INSTANTIATE_TEST(D3D12ResourceHeapTests, D3D12Backend());
