Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(37)

Unified Diff: device/generic_sensor/linux/sensor_reader_unittest.cc

Issue 2492773002: [sensors][CrOS/Linux] Implementation of motion sensors for CrOS/Linux platforms (Closed)
Patch Set: rebased Created 4 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « device/generic_sensor/linux/sensor_data_linux.cc ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: device/generic_sensor/linux/sensor_reader_unittest.cc
diff --git a/device/generic_sensor/linux/sensor_reader_unittest.cc b/device/generic_sensor/linux/sensor_reader_unittest.cc
index af4e28fbabf89fb2fb0d1365d0909b75e1eba441..de5b936506c6a9c5ee817f714902ee2e0cc6d2c4 100644
--- a/device/generic_sensor/linux/sensor_reader_unittest.cc
+++ b/device/generic_sensor/linux/sensor_reader_unittest.cc
@@ -17,11 +17,11 @@ namespace {
const base::FilePath::CharType* kDevice0Dir = FILE_PATH_LITERAL("device0");
-const std::string kSensorFileNameTest1 = "sensor_data1";
-const std::string kSensorFileNameTest2 = "sensor_data2";
-const std::string kSensorFileNameTest3 = "sensor_data3";
+const char kSensorFileNameTest1[] = "sensor_data1";
+const char kSensorFileNameTest2[] = "sensor_data2";
+const char kSensorFileNameTest3[] = "sensor_data3";
-const std::string kTestSensorFileNamesTest[3][5] = {
+const char* kTestSensorFileNamesTest[3][5] = {
{
kSensorFileNameTest1, "sensor1_input", "sensor1_raw_input", "sensor1",
"sensor1_data_raw",
@@ -36,6 +36,8 @@ const std::string kTestSensorFileNamesTest[3][5] = {
},
};
+const char kTestSensorFileNameScaling[] = "test_scaling";
+
void CreateFile(const base::FilePath& file) {
EXPECT_EQ(base::WriteFile(file, nullptr, 0), 0);
}
@@ -44,7 +46,7 @@ void DeleteFile(const base::FilePath& file) {
EXPECT_TRUE(base::DeleteFile(file, false));
}
-void WriteReadingFieldToFile(const base::FilePath& path, double value) {
+void WriteValueToFile(const base::FilePath& path, double value) {
const std::string str = base::DoubleToString(value);
int bytes_written = base::WriteFile(path, str.data(), str.size());
EXPECT_EQ(static_cast<size_t>(bytes_written), str.size());
@@ -65,7 +67,10 @@ class SensorReaderTest : public ::testing::Test {
void TearDown() override { ASSERT_TRUE(base_temp_dir_.Delete()); }
// Initialize SensorDataLinux with values for a sensor reader.
- void InitSensorDataForTest(size_t rows, SensorDataLinux* data) {
+ void InitSensorDataForTest(
+ size_t rows,
+ const SensorDataLinux::ReaderFunctor& apply_scaling_func,
+ SensorDataLinux* data) {
// Corresponds to maximum values in SensorReading.
// We must read only from up to three files. Thus - 3 sets of files
// should be fill in here.
@@ -73,6 +78,8 @@ class SensorReaderTest : public ::testing::Test {
if (rows > 3)
rows = max_rows;
+ data->apply_scaling_func = apply_scaling_func;
+ data->sensor_scale_name = kTestSensorFileNameScaling;
data->base_path_sensor_linux = base_dir_.value().c_str();
for (size_t i = 0; i < rows; ++i) {
std::vector<std::string> file_names(
@@ -106,14 +113,60 @@ class SensorReaderTest : public ::testing::Test {
TEST_F(SensorReaderTest, FileDoesNotExist) {
const char* kGiberishFiles[] = {"temp1", "temp2", "temp3", "temp4"};
const size_t rows = 3;
+ const double scaling_value = 0.1234;
// Create some gibberish files that we are not interested in.
for (unsigned int i = 0; i < arraysize(kGiberishFiles); ++i) {
base::FilePath some_file = sensors_dir_.Append(kGiberishFiles[i]);
CreateFile(some_file);
}
+ // Create a file with a scaling value.
+ base::FilePath temp_sensor_scale_file =
+ sensors_dir_.Append(kTestSensorFileNameScaling);
+ CreateFile(temp_sensor_scale_file);
+ // Write a scaling value to the file.
+ WriteValueToFile(temp_sensor_scale_file, scaling_value);
+
SensorDataLinux sensor_data;
- InitSensorDataForTest(rows, &sensor_data);
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
+
+ std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
+ EXPECT_FALSE(reader);
+}
+
+// Test a reader is still created if a file with a scaling value
+// does not exist.
+TEST_F(SensorReaderTest, ScalingFileDoesNotExist) {
+ const size_t rows = 1;
+ // Create a test sensor file, which must be found.
+ base::FilePath temp_sensor_file1 = sensors_dir_.Append(kSensorFileNameTest1);
+ CreateFile(temp_sensor_file1);
+
+ SensorDataLinux sensor_data;
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
+
+ std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
+ EXPECT_TRUE(reader);
+}
+
+// Test a reader is not created if a scaling file exists, but cannot be read
+// from.
+TEST_F(SensorReaderTest, CannotReadFromScalingFile) {
+ const size_t rows = 1;
+ // Create a test sensor file, which must be found.
+ base::FilePath temp_sensor_file1 = sensors_dir_.Append(kSensorFileNameTest1);
+ CreateFile(temp_sensor_file1);
+
+ // Create a file with a scaling value, which must be found.
+ base::FilePath temp_sensor_scale_file =
+ sensors_dir_.Append(kTestSensorFileNameScaling);
+ CreateFile(temp_sensor_scale_file);
+
+ SensorDataLinux sensor_data;
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
EXPECT_FALSE(reader);
@@ -130,13 +183,14 @@ TEST_F(SensorReaderTest, ReadValueFromOneFile) {
// Initialize sensor data for a reader.
SensorDataLinux sensor_data;
- InitSensorDataForTest(rows, &sensor_data);
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
EXPECT_TRUE(reader);
// Write a value to the file.
- WriteReadingFieldToFile(temp_sensor_file, value1);
+ WriteValueToFile(temp_sensor_file, value1);
// Fill SensorReading's first field with read value. Other fields must
// be 0.
@@ -161,14 +215,15 @@ TEST_F(SensorReaderTest, ReadValuesFromTwoFiles) {
// Initialize sensor data for a reader.
SensorDataLinux sensor_data;
- InitSensorDataForTest(rows, &sensor_data);
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
EXPECT_TRUE(reader);
// Write a value to the file.
- WriteReadingFieldToFile(temp_sensor_file1, value1);
- WriteReadingFieldToFile(temp_sensor_file2, value2);
+ WriteValueToFile(temp_sensor_file1, value1);
+ WriteValueToFile(temp_sensor_file2, value2);
// Fill SensorReading's two first fields with read value. Last field must
// be 0.
@@ -200,15 +255,16 @@ TEST_F(SensorReaderTest, ReadValuesFromThreeFilesAndFail) {
// Initialize sensor data for a reader.
SensorDataLinux sensor_data;
- InitSensorDataForTest(rows, &sensor_data);
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
EXPECT_TRUE(reader);
- // Write a value to the file.
- WriteReadingFieldToFile(temp_sensor_file1, value1);
- WriteReadingFieldToFile(temp_sensor_file2, value2);
- WriteReadingFieldToFile(temp_sensor_file3, value3);
+ // Write values to the files.
+ WriteValueToFile(temp_sensor_file1, value1);
+ WriteValueToFile(temp_sensor_file2, value2);
+ WriteValueToFile(temp_sensor_file3, value3);
// Fill SensorReading's values with data from files.
SensorReading reading;
@@ -234,7 +290,8 @@ TEST_F(SensorReaderTest, SensorReadFilesDoNotExist) {
// Initialize sensor data for a reader.
SensorDataLinux sensor_data;
- InitSensorDataForTest(rows, &sensor_data);
+ SensorDataLinux::ReaderFunctor empty_func;
+ InitSensorDataForTest(rows, empty_func, &sensor_data);
std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
EXPECT_FALSE(reader);
@@ -257,4 +314,59 @@ TEST_F(SensorReaderTest, SensorReadFilesDoNotExist) {
EXPECT_TRUE(reader);
}
+// Fill in SensorDataLinux with three arrays of files that must be found
+// before creating a sensor reader. Create a file with a scaling value that
+// must be applied. Pass a func to a SensorReader that will be used to
+// apply scalings.
+TEST_F(SensorReaderTest, CheckSensorReadingScalingApplied) {
+ const size_t rows = 3;
+ const double value1 = 20;
+ const double value2 = 50;
+ const double value3 = 80;
+ const double scaling_value = 0.1234;
+ // Create a file with a scaling value, which must be found.
+ base::FilePath temp_sensor_scale_file =
+ sensors_dir_.Append(kTestSensorFileNameScaling);
+ CreateFile(temp_sensor_scale_file);
+
+ // Create a test sensor file, which must be found. Other
+ // files will not be created and the test must fail to create a reader.
+ base::FilePath temp_sensor_file1 = sensors_dir_.Append(kSensorFileNameTest1);
+ CreateFile(temp_sensor_file1);
+
+ // Create one more file. The reader mustn't be created as long as it
+ // expects three files to be found.
+ base::FilePath temp_sensor_file2 = sensors_dir_.Append(kSensorFileNameTest2);
+ CreateFile(temp_sensor_file2);
+
+ // Create last file.
+ base::FilePath temp_sensor_file3 = sensors_dir_.Append(kSensorFileNameTest3);
+ CreateFile(temp_sensor_file3);
+
+ // Write value to the files.
+ WriteValueToFile(temp_sensor_file1, value1);
+ WriteValueToFile(temp_sensor_file2, value2);
+ WriteValueToFile(temp_sensor_file3, value3);
+ WriteValueToFile(temp_sensor_scale_file, scaling_value);
+
+ // Initialize sensor data for a reader.
+ SensorDataLinux sensor_data;
+ SensorDataLinux::ReaderFunctor apply_scaling_func =
+ base::Bind([](double scaling_value_in_reader, SensorReading& reading) {
+ reading.values[0] = scaling_value_in_reader * reading.values[0];
+ reading.values[1] = -scaling_value_in_reader * reading.values[1];
+ reading.values[2] = scaling_value_in_reader * reading.values[2];
+ });
+ InitSensorDataForTest(rows, apply_scaling_func, &sensor_data);
+
+ std::unique_ptr<SensorReader> reader = SensorReader::Create(sensor_data);
+ EXPECT_TRUE(reader);
+
+ // Fill SensorReading's values with data from files.
+ SensorReading reading;
+ EXPECT_TRUE(reader->ReadSensorReading(&reading));
+ CheckSensorDataFields(reading, value1 * scaling_value,
+ value2 * (-scaling_value), value3 * scaling_value);
+}
+
} // namespace device
« no previous file with comments | « device/generic_sensor/linux/sensor_data_linux.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698