blob: db8aff298bb1a3b15231929e388727bc42e61b64 [file] [log] [blame]
// Copyright (c) 2012 The Chromium OS Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "evemu_device.h"
#include <sstream>
#include <gtest/gtest.h>
namespace evemu {
class EvemuDeviceTests : public ::testing::Test {
};
std::string lumpy_dat = "N: cyapa\n"
"I: 0018 0000 0000 0001\n"
"P: 05 00 00 00 00 00 00 00\n"
"B: 00 0b 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 01 00 00 00 00 00\n"
"B: 01 20 e5 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 01 00 00 00 00 00 00 00 00\n"
"B: 02 00 00 00 00 00 00 00 00\n"
"B: 03 03 00 00 01 00 80 60 06\n"
"B: 04 00 00 00 00 00 00 00 00\n"
"B: 05 00 00 00 00 00 00 00 00\n"
"B: 11 00 00 00 00 00 00 00 00\n"
"B: 12 00 00 00 00 00 00 00 00\n"
"B: 15 00 00 00 00 00 00 00 00\n"
"B: 15 00 00 00 00 00 00 00 00\n"
"A: 00 0 1280 0 0 12\n"
"A: 01 0 680 0 0 10\n"
"A: 18 0 255 0 0 0\n"
"A: 2f 0 14 0 0\n"
"A: 35 0 1280 0 0 12\n"
"A: 36 0 680 0 0 10\n"
"A: 39 0 65535 0 0 0\n"
"A: 3a 0 255 0 0 0";
TEST(EvemuDeviceTests, ReadDeviceFileTest) {
EvemuDevice device;
std::stringstream stream(lumpy_dat);
ASSERT_TRUE(device.ReadDeviceFile(&stream));
// test if arbitrary samples from lumpy_dat are read correctly
EXPECT_EQ(device.GetName(), "cyapa");
EXPECT_EQ(device.GetPropMask()[0], 0x05);
EXPECT_EQ(device.GetMask(0x00)[0], 0x0b);
EXPECT_EQ(device.GetMask(0x03)[0], 0x03);
EXPECT_EQ(device.GetAbsinfo(0x00).maximum, 1280);
}
TEST(EvemuDeviceTests, ReadEventDecodingTest) {
EvemuDevice device;
std::stringstream stream(
"E: 1335424966.811225 0003 003a 44\n"
);
struct input_event event;
ASSERT_TRUE(device.ReadEvent(&stream, &event));
EXPECT_EQ(event.time.tv_sec, 1335424966);
EXPECT_EQ(event.time.tv_usec, 811225);
EXPECT_EQ(event.type, 0x0003);
EXPECT_EQ(event.code, 0x003a);
EXPECT_EQ(event.value, 44);
}
TEST(EvemuDeviceTests, ReadEventNewlineTest) {
EvemuDevice device;
std::stringstream stream1(
"E: 0.0 0000 0000 00\n"
"E: 0.0 0000 0000 00"
);
std::stringstream stream2(
"E: 0.0 0000 0000 00\n"
"E: 0.0 0000 0000 00\n"
);
struct input_event event;
ASSERT_TRUE(device.ReadEvent(&stream1, &event));
ASSERT_TRUE(device.ReadEvent(&stream1, &event));
ASSERT_FALSE(device.ReadEvent(&stream1, &event));
ASSERT_TRUE(device.ReadEvent(&stream2, &event));
ASSERT_TRUE(device.ReadEvent(&stream2, &event));
ASSERT_FALSE(device.ReadEvent(&stream2, &event));
}
} // namespace evemu