| # Lint as: python3 |
| # Copyright 2019 The TensorFlow Authors. All Rights Reserved. |
| # |
| # Licensed under the Apache License, Version 2.0 (the "License"); |
| # you may not use this file except in compliance with the License. |
| # You may obtain a copy of the License at |
| # |
| # http://www.apache.org/licenses/LICENSE-2.0 |
| # |
| # Unless required by applicable law or agreed to in writing, software |
| # distributed under the License is distributed on an "AS IS" BASIS, |
| # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| # See the License for the specific language governing permissions and |
| # limitations under the License. |
| # ============================================================================== |
| |
| """Test for data_split.py.""" |
| |
| from __future__ import absolute_import |
| from __future__ import division |
| from __future__ import print_function |
| |
| import json |
| import unittest |
| from data_split import read_data |
| from data_split import split_data |
| |
| |
| class TestSplit(unittest.TestCase): |
| |
| def setUp(self): # pylint: disable=g-missing-super-call |
| self.data = read_data("./data/complete_data") |
| self.num_dic = {"wing": 0, "ring": 0, "slope": 0, "negative": 0} |
| with open("./data/complete_data", "r") as f: |
| lines = f.readlines() |
| self.num = len(lines) |
| |
| def test_read_data(self): |
| self.assertEqual(len(self.data), self.num) |
| self.assertIsInstance(self.data, list) |
| self.assertIsInstance(self.data[0], dict) |
| self.assertEqual( |
| set(list(self.data[-1])), set(["gesture", "accel_ms2_xyz", "name"])) |
| |
| def test_split_data(self): |
| with open("./data/complete_data", "r") as f: |
| lines = f.readlines() |
| for idx, line in enumerate(lines): # pylint: disable=unused-variable |
| dic = json.loads(line) |
| for ges in self.num_dic: |
| if dic["gesture"] == ges: |
| self.num_dic[ges] += 1 |
| train_data_0, valid_data_0, test_data_100 = split_data(self.data, 0, 0) |
| train_data_50, valid_data_50, test_data_0 = split_data(self.data, 0.5, 0.5) |
| train_data_60, valid_data_20, test_data_20 = split_data(self.data, 0.6, 0.2) |
| len_60 = int(self.num_dic["wing"] * 0.6) + int( |
| self.num_dic["ring"] * 0.6) + int(self.num_dic["slope"] * 0.6) + int( |
| self.num_dic["negative"] * 0.6) |
| len_50 = int(self.num_dic["wing"] * 0.5) + int( |
| self.num_dic["ring"] * 0.5) + int(self.num_dic["slope"] * 0.5) + int( |
| self.num_dic["negative"] * 0.5) |
| len_20 = int(self.num_dic["wing"] * 0.2) + int( |
| self.num_dic["ring"] * 0.2) + int(self.num_dic["slope"] * 0.2) + int( |
| self.num_dic["negative"] * 0.2) |
| self.assertEqual(len(train_data_0), 0) |
| self.assertEqual(len(train_data_50), len_50) |
| self.assertEqual(len(train_data_60), len_60) |
| self.assertEqual(len(valid_data_0), 0) |
| self.assertEqual(len(valid_data_50), len_50) |
| self.assertEqual(len(valid_data_20), len_20) |
| self.assertEqual(len(test_data_100), self.num) |
| self.assertEqual(len(test_data_0), (self.num - 2 * len_50)) |
| self.assertEqual(len(test_data_20), (self.num - len_60 - len_20)) |
| |
| |
| if __name__ == "__main__": |
| unittest.main() |