xref: /aosp_15_r20/external/libchrome-gestures/src/util_unittest.cc (revision aed3e5085e770be5b69ce25295ecf6ddf906af95)
1 // Copyright 2012 The ChromiumOS Authors
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include <gtest/gtest.h>
6 
7 #include "include/macros.h"
8 #include "include/util.h"
9 
10 namespace gestures {
11 
12 class UtilTest : public ::testing::Test {};
13 
TEST(UtilTest,DistSqTest)14 TEST(UtilTest, DistSqTest) {
15   FingerState fs[] = {
16     // TM, Tm, WM, Wm, Press, Orientation, X, Y, TrID
17     {0, 0, 0, 0, 1, 0, 1, 2, 1, 0},
18     {0, 0, 0, 0, 1, 0, 4, 6, 1, 0}
19   };
20   EXPECT_FLOAT_EQ(DistSq(fs[0], fs[1]), 25);
21   EXPECT_FLOAT_EQ(DistSqXY(fs[0], 4, 6), 25);
22 }
23 
TEST(UtilTest,ListAtTest)24 TEST(UtilTest, ListAtTest) {
25   const int kMaxElements = 3;
26   struct element {
27     int x;
28   };
29 
30   List<element> list;
31 
32   for (auto i = 0; i < kMaxElements; ++i) {
33     auto& elem = list.emplace_back();
34     elem.x = i;
35   }
36   EXPECT_EQ(list.at(-1).x, list.at(list.size() - 1).x);
37 
38   for (auto i = 0; i < kMaxElements; ++i) {
39     for (auto j = 0; j < kMaxElements; ++j) {
40       if (i == j) {
41         EXPECT_EQ(list.at(i).x, list.at(j).x);
42         EXPECT_EQ(&(list.at(i)), &(list.at(j)));
43       } else {
44         EXPECT_NE(list.at(i).x, list.at(j).x);
45         EXPECT_NE(&(list.at(i)), &(list.at(j)));
46       }
47     }
48   }
49 }
50 
TEST(UtilTest,ListAtDeathForwardTest)51 TEST(UtilTest, ListAtDeathForwardTest) {
52   List<int> list;
53   const int kMaxElements = 3;
54 
55   for (auto i = 0; i < kMaxElements; ++i) {
56     list.emplace_back(i);
57   }
58   EXPECT_DEATH(list.at(kMaxElements+1), "");
59 }
60 
TEST(UtilTest,ListAtDeathBackwardTest)61 TEST(UtilTest, ListAtDeathBackwardTest) {
62   List<int> list;
63   const int kMaxElements = 3;
64 
65   for (auto i = 0; i < kMaxElements; ++i) {
66     list.emplace_back(i);
67   }
68   EXPECT_DEATH(list.at(-(kMaxElements+1)), "");
69 }
70 
71 }  // namespace gestures
72