Internal change
authorA. Unique TensorFlower <gardener@tensorflow.org>
Tue, 6 Mar 2018 22:07:23 +0000 (14:07 -0800)
committerTensorFlower Gardener <gardener@tensorflow.org>
Tue, 6 Mar 2018 22:12:34 +0000 (14:12 -0800)
PiperOrigin-RevId: 188078128

tensorflow/contrib/lite/kernels/BUILD
tensorflow/contrib/lite/kernels/test_util_test.cc [new file with mode: 0644]

index 6bbc0bf..a6be410 100644 (file)
@@ -97,6 +97,17 @@ tf_cc_test(
     ],
 )
 
+tf_cc_test(
+    name = "test_util_test",
+    size = "small",
+    srcs = ["test_util_test.cc"],
+    deps = [
+        ":test_util",
+        "//tensorflow/contrib/lite/testing:util",
+        "@com_google_googletest//:gtest",
+    ],
+)
+
 cc_library(
     name = "builtin_ops",
     srcs = [
diff --git a/tensorflow/contrib/lite/kernels/test_util_test.cc b/tensorflow/contrib/lite/kernels/test_util_test.cc
new file mode 100644 (file)
index 0000000..1e10e89
--- /dev/null
@@ -0,0 +1,51 @@
+/* Copyright 2018 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.
+==============================================================================*/
+#include "tensorflow/contrib/lite/kernels/test_util.h"
+#include <gtest/gtest.h>
+
+namespace tflite {
+namespace {
+
+using ::testing::ElementsAreArray;
+
+TEST(TestUtilTest, QuantizeVector) {
+  std::vector<float> data = {-1.0, -0.5, 0.0, 0.5, 1.0, 1000.0};
+  auto q_data = Quantize<uint8>(data, /*scale=*/1.0, /*zero_point=*/0);
+  std::vector<uint8> expected = {0, 0, 0, 1, 1, 255};
+  EXPECT_THAT(q_data, ElementsAreArray(expected));
+}
+
+TEST(TestUtilTest, QuantizeVectorScalingDown) {
+  std::vector<float> data = {-1.0, -0.5, 0.0, 0.5, 1.0, 1000.0};
+  auto q_data = Quantize<uint8>(data, /*scale=*/10.0, /*zero_point=*/0);
+  std::vector<uint8> expected = {0, 0, 0, 0, 0, 100};
+  EXPECT_THAT(q_data, ElementsAreArray(expected));
+}
+
+TEST(TestUtilTest, QuantizeVectorScalingUp) {
+  std::vector<float> data = {-1.0, -0.5, 0.0, 0.5, 1.0, 1000.0};
+  auto q_data = Quantize<uint8>(data, /*scale=*/0.1, /*zero_point=*/0);
+  std::vector<uint8> expected = {0, 0, 0, 5, 10, 255};
+  EXPECT_THAT(q_data, ElementsAreArray(expected));
+}
+
+}  // namespace
+}  // namespace tflite
+
+int main(int argc, char** argv) {
+  ::tflite::LogToStderr();
+  ::testing::InitGoogleTest(&argc, argv);
+  return RUN_ALL_TESTS();
+}