TestCoord.cpp (2409B)
1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ 2 /* vim: set ts=8 sts=2 et sw=2 tw=80: */ 3 /* This Source Code Form is subject to the terms of the Mozilla Public 4 * License, v. 2.0. If a copy of the MPL was not distributed with this 5 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ 6 7 #include "gtest/gtest.h" 8 9 #include "nsCoord.h" 10 11 namespace mozilla { 12 13 template <typename CoordTyped> 14 void TestConstructors() { 15 CoordTyped coord1; 16 EXPECT_EQ(coord1.value, 0); 17 18 CoordTyped coord2 = 6000; 19 EXPECT_EQ(coord2.value, 6000); 20 21 EXPECT_EQ(CoordTyped::FromRound(5.3).value, 5); 22 EXPECT_EQ(CoordTyped::FromRound(5.5).value, 6); 23 EXPECT_EQ(CoordTyped::FromRound(-2.5).value, -2); 24 25 EXPECT_EQ(CoordTyped::FromTruncate(5.9).value, 5); 26 EXPECT_EQ(CoordTyped::FromTruncate(-2.7).value, -2); 27 28 EXPECT_EQ(CoordTyped::FromCeil(5.3).value, 6); 29 EXPECT_EQ(CoordTyped::FromCeil(-2.7).value, -2); 30 31 EXPECT_EQ(CoordTyped::FromFloor(5.9).value, 5); 32 EXPECT_EQ(CoordTyped::FromFloor(-2.7).value, -3); 33 } 34 35 template <typename CoordTyped> 36 void TestComparisonOperators() { 37 CoordTyped coord1 = 6000; 38 CoordTyped coord2 = 10000; 39 40 EXPECT_LT(coord1, CoordTyped::kMax); 41 EXPECT_GT(coord1, CoordTyped::kMin); 42 EXPECT_NE(coord1, coord2); 43 } 44 45 template <typename CoordTyped> 46 void TestArithmeticOperators() { 47 CoordTyped coord1 = 6000; 48 CoordTyped coord2 = 10000; 49 50 EXPECT_EQ(coord1 + coord2, CoordTyped(16000)); 51 EXPECT_EQ(coord2 - coord1, CoordTyped(4000)); 52 53 decltype(CoordTyped::value) scaleInt = 2; 54 EXPECT_EQ(coord1 * scaleInt, CoordTyped(12000)); 55 EXPECT_EQ(coord1 / scaleInt, CoordTyped(3000)); 56 57 EXPECT_EQ(coord1 * 2.0, 12000.0); 58 EXPECT_EQ(coord1 / 2.0, 3000.0); 59 } 60 61 template <typename CoordTyped> 62 void TestClamp() { 63 CoordTyped coord1 = CoordTyped::kMax + 1000; 64 EXPECT_EQ(coord1.ToMinMaxClamped(), CoordTyped::kMax); 65 66 CoordTyped coord2 = CoordTyped::kMin - 1000; 67 EXPECT_EQ(coord2.ToMinMaxClamped(), CoordTyped::kMin); 68 69 CoordTyped coord3 = 12000; 70 EXPECT_EQ(coord3.ToMinMaxClamped(), CoordTyped(12000)); 71 } 72 73 TEST(Gfx, TestAuCoord) 74 { 75 TestConstructors<AuCoord>(); 76 TestComparisonOperators<AuCoord>(); 77 TestArithmeticOperators<AuCoord>(); 78 TestClamp<AuCoord>(); 79 } 80 81 TEST(Gfx, TestAuCoord64) 82 { 83 TestConstructors<AuCoord64>(); 84 TestComparisonOperators<AuCoord64>(); 85 TestArithmeticOperators<AuCoord64>(); 86 TestClamp<AuCoord64>(); 87 } 88 89 } // namespace mozilla