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

Side by Side Diff: experimental/c_salt/variant_test.cc

Issue 10928195: First round of dead file removal (Closed) Base URL: https://github.com/samclegg/nativeclient-sdk.git@master
Patch Set: Created 8 years, 3 months 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 unified diff | Download patch
« no previous file with comments | « experimental/c_salt/variant_ptrs.h ('k') | experimental/conways_life/about.html » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2010 The Ginsu Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can
3 // be found in the LICENSE file.
4
5 #include <cmath>
6 #include <iostream>
7 #include <limits>
8 #include <string>
9
10 #include "c_salt/variant.h"
11 #include "gmock/gmock.h"
12 #include "gtest/gtest.h"
13
14 using c_salt::Variant;
15
16 namespace {
17 const char* kTestBoolTrueString = "true";
18 const double kTestDoubleValue = 3.141592653589793;
19 const char* kTestDoubleAsString = "3.1415926535897";
20 const int32_t kTestIntValue = 42;
21 const char* kTestIntAsString = "42";
22 const char* kTestString = "this is a test string";
23 // |kTestTruncatedIntValue| is the integer equivalent to
24 // floor(kTestDoubleValue).
25 const int32_t kTestTruncatedIntValue = 3;
26 } // namespace
27
28 class VariantTest : public ::testing::Test {
29 protected:
30 virtual void SetUp() {}
31 };
32
33 // Create a Variant from string. Tests all the typed return values.
34 TEST_F(VariantTest, CreateFromStr) {
35 Variant str_var(kTestString);
36 EXPECT_EQ(Variant::kStringVariantType, str_var.variant_type());
37 EXPECT_EQ(kTestString, str_var.StringValue());
38 // BoolValue() should return |true| because the test string begins with a
39 // 't'.
40 EXPECT_TRUE(str_var.BoolValue());
41 EXPECT_EQ(0, str_var.Int32Value());
42 EXPECT_EQ(0.0, str_var.DoubleValue());
43 }
44
45 // Create a Variant from an int32. Tests all the typed return values.
46 TEST_F(VariantTest, CreateFromInt) {
47 Variant int_var(kTestIntValue);
48 EXPECT_EQ(Variant::kInt32VariantType, int_var.variant_type());
49 EXPECT_EQ(kTestIntAsString, int_var.StringValue());
50 EXPECT_TRUE(int_var.BoolValue());
51 EXPECT_EQ(kTestIntValue, int_var.Int32Value());
52 EXPECT_TRUE(std::fabs(int_var.DoubleValue() - kTestIntValue) <=
53 std::numeric_limits<double>::epsilon());
54 // TODO(dspringer): Add this test when ObjectValue() is implemented.
55 // EXPECT_EQ(NULL, int_var.ObjectValue());
56 }
57
58 // Create a Variant from a double. Tests all the typed return values.
59 TEST_F(VariantTest, CreateFromDouble) {
60 Variant dbl_var(kTestDoubleValue);
61 EXPECT_EQ(Variant::kDoubleVariantType, dbl_var.variant_type());
62 EXPECT_EQ(0, strncmp(dbl_var.StringValue().c_str(),
63 kTestDoubleAsString,
64 strlen(kTestDoubleAsString)));
65 EXPECT_TRUE(dbl_var.BoolValue());
66 EXPECT_EQ(kTestTruncatedIntValue, dbl_var.Int32Value());
67 EXPECT_TRUE(std::fabs(dbl_var.DoubleValue() - kTestDoubleValue) <=
68 std::numeric_limits<double>::epsilon());
69 }
70
71 // Create a Variant from an bool. Tests all the typed return values.
72 TEST_F(VariantTest, CreateFromBoolNPVariant) {
73 Variant bool_var(true);
74 EXPECT_EQ(Variant::kBoolVariantType, bool_var.variant_type());
75 EXPECT_EQ("true", bool_var.StringValue());
76 EXPECT_TRUE(bool_var.BoolValue());
77 EXPECT_EQ(1, bool_var.Int32Value());
78 EXPECT_TRUE(std::fabs(bool_var.DoubleValue() - 1) <=
79 std::numeric_limits<double>::epsilon());
80 }
81
82 // Make sure well-known string values convert correctly to bool types, and
83 // bool types convert to the known string values.
84 TEST_F(VariantTest, TypeConvertStringToBool) {
85 Variant bool_var(true);
86 EXPECT_EQ(Variant::kBoolVariantType, bool_var.variant_type());
87 // Convert bool to string and back.
88 Variant str_from_bool(bool_var.StringValue());
89 EXPECT_EQ(0, strncmp(str_from_bool.StringValue().c_str(),
90 kTestBoolTrueString,
91 strlen(kTestBoolTrueString)));
92 Variant bool_from_str(str_from_bool.BoolValue());
93 EXPECT_TRUE(bool_from_str.BoolValue());
94 // Step 2: Convert certain well-known strings to bools.
95 Variant str_true("true");
96 EXPECT_TRUE(str_true.BoolValue());
97 Variant str_yes("Yes");
98 EXPECT_TRUE(str_yes.BoolValue());
99 Variant str_1("1");
100 EXPECT_TRUE(str_1.BoolValue());
101 Variant str_0("0");
102 EXPECT_FALSE(str_0.BoolValue());
103 Variant str_false("hello?");
104 EXPECT_FALSE(str_false.BoolValue());
105 }
106
107 // Make sure the conversion from a double type to string works both ways.
108 TEST_F(VariantTest, TypeConverStringToDouble) {
109 Variant dbl_var(kTestDoubleValue);
110 EXPECT_EQ(Variant::kDoubleVariantType, dbl_var.variant_type());
111 // Convert double to string and back.
112 Variant str_from_dbl(dbl_var.StringValue());
113 EXPECT_EQ(0, strncmp(str_from_dbl.StringValue().c_str(),
114 kTestDoubleAsString,
115 strlen(kTestDoubleAsString)));
116 Variant dbl_from_str(str_from_dbl.DoubleValue());
117 EXPECT_TRUE(std::fabs(dbl_from_str.DoubleValue() - kTestDoubleValue) <=
118 std::numeric_limits<double>::epsilon());
119 }
120
121 // Make sure the coinversion from an int type to string works both ways.
122 TEST_F(VariantTest, TypeConvertIntToString) {
123 Variant int_var(kTestIntValue);
124 EXPECT_EQ(Variant::kInt32VariantType, int_var.variant_type());
125 // Convert int to string and back.
126 Variant str_from_int(int_var.StringValue());
127 EXPECT_EQ(kTestIntAsString, str_from_int.StringValue());
128 Variant int_from_str(str_from_int.Int32Value());
129 EXPECT_EQ(kTestIntValue, int_from_str.Int32Value());
130 }
OLDNEW
« no previous file with comments | « experimental/c_salt/variant_ptrs.h ('k') | experimental/conways_life/about.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698