OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "gin/converter.h" | 5 #include "gin/converter.h" |
6 | 6 |
7 #include <limits.h> | 7 #include <limits.h> |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/compiler_specific.h" | 10 #include "base/compiler_specific.h" |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 73 |
74 int test_data_to[] = {-1, 0, 1}; | 74 int test_data_to[] = {-1, 0, 1}; |
75 for (size_t i = 0; i < arraysize(test_data_to); ++i) { | 75 for (size_t i = 0; i < arraysize(test_data_to); ++i) { |
76 EXPECT_TRUE(Converter<int32_t>::ToV8(instance_->isolate(), test_data_to[i]) | 76 EXPECT_TRUE(Converter<int32_t>::ToV8(instance_->isolate(), test_data_to[i]) |
77 ->StrictEquals( | 77 ->StrictEquals( |
78 Integer::New(instance_->isolate(), test_data_to[i]))); | 78 Integer::New(instance_->isolate(), test_data_to[i]))); |
79 } | 79 } |
80 | 80 |
81 struct { | 81 struct { |
82 v8::Local<v8::Value> input; | 82 v8::Local<v8::Value> input; |
83 bool expect_sucess; | 83 bool expect_success; |
84 int expected_result; | 84 int expected_result; |
85 } test_data_from[] = { | 85 } test_data_from[] = { |
86 { Boolean::New(instance_->isolate(), false).As<Value>(), false, 0 }, | 86 { Boolean::New(instance_->isolate(), false).As<Value>(), false, 0 }, |
87 { Boolean::New(instance_->isolate(), true).As<Value>(), false, 0 }, | 87 { Boolean::New(instance_->isolate(), true).As<Value>(), false, 0 }, |
88 { Integer::New(instance_->isolate(), -1).As<Value>(), true, -1 }, | 88 { Integer::New(instance_->isolate(), -1).As<Value>(), true, -1 }, |
89 { Integer::New(instance_->isolate(), 0).As<Value>(), true, 0 }, | 89 { Integer::New(instance_->isolate(), 0).As<Value>(), true, 0 }, |
90 { Integer::New(instance_->isolate(), 1).As<Value>(), true, 1 }, | 90 { Integer::New(instance_->isolate(), 1).As<Value>(), true, 1 }, |
91 { Number::New(instance_->isolate(), -1).As<Value>(), true, -1 }, | 91 { Number::New(instance_->isolate(), -1).As<Value>(), true, -1 }, |
92 { Number::New(instance_->isolate(), 1.1).As<Value>(), false, 0 }, | 92 { Number::New(instance_->isolate(), 1.1).As<Value>(), false, 0 }, |
93 { String::NewFromUtf8(instance_->isolate(), "42").As<Value>(), false, 0 }, | 93 { String::NewFromUtf8(instance_->isolate(), "42").As<Value>(), false, 0 }, |
94 { String::NewFromUtf8(instance_->isolate(), "foo").As<Value>(), false, 0 }, | 94 { String::NewFromUtf8(instance_->isolate(), "foo").As<Value>(), false, 0 }, |
95 { Object::New(instance_->isolate()).As<Value>(), false, 0 }, | 95 { Object::New(instance_->isolate()).As<Value>(), false, 0 }, |
96 { Array::New(instance_->isolate()).As<Value>(), false, 0 }, | 96 { Array::New(instance_->isolate()).As<Value>(), false, 0 }, |
97 { v8::Null(instance_->isolate()).As<Value>(), false, 0 }, | 97 { v8::Null(instance_->isolate()).As<Value>(), false, 0 }, |
98 { v8::Undefined(instance_->isolate()).As<Value>(), false, 0 }, | 98 { v8::Undefined(instance_->isolate()).As<Value>(), false, 0 }, |
99 }; | 99 }; |
100 | 100 |
101 for (size_t i = 0; i < arraysize(test_data_from); ++i) { | 101 for (size_t i = 0; i < arraysize(test_data_from); ++i) { |
102 int32_t result = std::numeric_limits<int32_t>::min(); | 102 int32_t result = std::numeric_limits<int32_t>::min(); |
103 bool success = Converter<int32_t>::FromV8(instance_->isolate(), | 103 bool success = Converter<int32_t>::FromV8(instance_->isolate(), |
104 test_data_from[i].input, &result); | 104 test_data_from[i].input, &result); |
105 EXPECT_EQ(test_data_from[i].expect_sucess, success) << i; | 105 EXPECT_EQ(test_data_from[i].expect_success, success) << i; |
106 if (success) | 106 if (success) |
107 EXPECT_EQ(test_data_from[i].expected_result, result) << i; | 107 EXPECT_EQ(test_data_from[i].expected_result, result) << i; |
108 } | 108 } |
109 } | 109 } |
110 | 110 |
111 TEST_F(ConverterTest, Vector) { | 111 TEST_F(ConverterTest, Vector) { |
112 HandleScope handle_scope(instance_->isolate()); | 112 HandleScope handle_scope(instance_->isolate()); |
113 | 113 |
114 std::vector<int> expected; | 114 std::vector<int> expected; |
115 expected.push_back(-1); | 115 expected.push_back(-1); |
116 expected.push_back(0); | 116 expected.push_back(0); |
117 expected.push_back(1); | 117 expected.push_back(1); |
118 | 118 |
119 auto maybe = Converter<std::vector<int>>::ToV8( | 119 auto maybe = Converter<std::vector<int>>::ToV8( |
120 instance_->isolate()->GetCurrentContext(), expected); | 120 instance_->isolate()->GetCurrentContext(), expected); |
121 Local<Value> js_value; | 121 Local<Value> js_value; |
122 EXPECT_TRUE(maybe.ToLocal(&js_value)); | 122 EXPECT_TRUE(maybe.ToLocal(&js_value)); |
123 Local<Array> js_array2 = Local<Array>::Cast(js_value); | 123 Local<Array> js_array2 = Local<Array>::Cast(js_value); |
124 EXPECT_EQ(3u, js_array2->Length()); | 124 EXPECT_EQ(3u, js_array2->Length()); |
125 for (size_t i = 0; i < expected.size(); ++i) { | 125 for (size_t i = 0; i < expected.size(); ++i) { |
126 EXPECT_TRUE(Integer::New(instance_->isolate(), expected[i]) | 126 EXPECT_TRUE(Integer::New(instance_->isolate(), expected[i]) |
127 ->StrictEquals(js_array2->Get(static_cast<int>(i)))); | 127 ->StrictEquals(js_array2->Get(static_cast<int>(i)))); |
128 } | 128 } |
129 } | 129 } |
130 | 130 |
131 } // namespace gin | 131 } // namespace gin |
OLD | NEW |