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