1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "tools/json_schema_compiler/test/simple_api.h"
7 #include "testing/gtest/include/gtest/gtest.h"
9 using namespace test::api::simple_api
;
13 static scoped_ptr
<base::DictionaryValue
> CreateTestTypeDictionary() {
14 scoped_ptr
<base::DictionaryValue
> value(new base::DictionaryValue());
15 value
->SetWithoutPathExpansion("number", new base::FundamentalValue(1.1));
16 value
->SetWithoutPathExpansion("integer", new base::FundamentalValue(4));
17 value
->SetWithoutPathExpansion("string", new base::StringValue("bling"));
18 value
->SetWithoutPathExpansion("boolean", new base::FundamentalValue(true));
24 TEST(JsonSchemaCompilerSimpleTest
, IncrementIntegerResultCreate
) {
25 scoped_ptr
<base::ListValue
> results
= IncrementInteger::Results::Create(5);
26 base::ListValue expected
;
27 expected
.Append(new base::FundamentalValue(5));
28 EXPECT_TRUE(results
->Equals(&expected
));
31 TEST(JsonSchemaCompilerSimpleTest
, IncrementIntegerParamsCreate
) {
32 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
33 params_value
->Append(new base::FundamentalValue(6));
34 scoped_ptr
<IncrementInteger::Params
> params(
35 IncrementInteger::Params::Create(*params_value
));
36 EXPECT_TRUE(params
.get());
37 EXPECT_EQ(6, params
->num
);
40 TEST(JsonSchemaCompilerSimpleTest
, NumberOfParams
) {
42 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
43 params_value
->Append(new base::StringValue("text"));
44 params_value
->Append(new base::StringValue("text"));
45 scoped_ptr
<OptionalString::Params
> params(
46 OptionalString::Params::Create(*params_value
));
47 EXPECT_FALSE(params
.get());
50 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
51 scoped_ptr
<IncrementInteger::Params
> params(
52 IncrementInteger::Params::Create(*params_value
));
53 EXPECT_FALSE(params
.get());
57 TEST(JsonSchemaCompilerSimpleTest
, OptionalStringParamsCreate
) {
59 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
60 scoped_ptr
<OptionalString::Params
> params(
61 OptionalString::Params::Create(*params_value
));
62 EXPECT_TRUE(params
.get());
63 EXPECT_FALSE(params
->str
.get());
66 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
67 params_value
->Append(new base::StringValue("asdf"));
68 scoped_ptr
<OptionalString::Params
> params(
69 OptionalString::Params::Create(*params_value
));
70 EXPECT_TRUE(params
.get());
71 EXPECT_TRUE(params
->str
.get());
72 EXPECT_EQ("asdf", *params
->str
);
76 TEST(JsonSchemaCompilerSimpleTest
, OptionalParamsTakingNull
) {
78 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
79 params_value
->Append(base::Value::CreateNullValue());
80 scoped_ptr
<OptionalString::Params
> params(
81 OptionalString::Params::Create(*params_value
));
82 EXPECT_TRUE(params
.get());
83 EXPECT_FALSE(params
->str
.get());
87 TEST(JsonSchemaCompilerSimpleTest
, OptionalStringParamsWrongType
) {
89 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
90 params_value
->Append(new base::FundamentalValue(5));
91 scoped_ptr
<OptionalString::Params
> params(
92 OptionalString::Params::Create(*params_value
));
93 EXPECT_FALSE(params
.get());
97 TEST(JsonSchemaCompilerSimpleTest
, OptionalBeforeRequired
) {
99 scoped_ptr
<base::ListValue
> params_value(new base::ListValue());
100 params_value
->Append(base::Value::CreateNullValue());
101 params_value
->Append(new base::StringValue("asdf"));
102 scoped_ptr
<OptionalBeforeRequired::Params
> params(
103 OptionalBeforeRequired::Params::Create(*params_value
));
104 EXPECT_TRUE(params
.get());
105 EXPECT_FALSE(params
->first
.get());
106 EXPECT_EQ("asdf", params
->second
);
110 TEST(JsonSchemaCompilerSimpleTest
, NoParamsResultCreate
) {
111 scoped_ptr
<base::ListValue
> results
= OptionalString::Results::Create();
112 base::ListValue expected
;
113 EXPECT_TRUE(results
->Equals(&expected
));
116 TEST(JsonSchemaCompilerSimpleTest
, TestTypePopulate
) {
118 scoped_ptr
<TestType
> test_type(new TestType());
119 scoped_ptr
<base::DictionaryValue
> value
= CreateTestTypeDictionary();
120 EXPECT_TRUE(TestType::Populate(*value
, test_type
.get()));
121 EXPECT_EQ("bling", test_type
->string
);
122 EXPECT_EQ(1.1, test_type
->number
);
123 EXPECT_EQ(4, test_type
->integer
);
124 EXPECT_EQ(true, test_type
->boolean
);
125 EXPECT_TRUE(value
->Equals(test_type
->ToValue().get()));
128 scoped_ptr
<TestType
> test_type(new TestType());
129 scoped_ptr
<base::DictionaryValue
> value
= CreateTestTypeDictionary();
130 value
->Remove("number", NULL
);
131 EXPECT_FALSE(TestType::Populate(*value
, test_type
.get()));
135 TEST(JsonSchemaCompilerSimpleTest
, GetTestType
) {
137 scoped_ptr
<base::DictionaryValue
> value
= CreateTestTypeDictionary();
138 scoped_ptr
<TestType
> test_type(new TestType());
139 EXPECT_TRUE(TestType::Populate(*value
, test_type
.get()));
140 scoped_ptr
<base::ListValue
> results
=
141 GetTestType::Results::Create(*test_type
);
143 base::DictionaryValue
* result
= NULL
;
144 results
->GetDictionary(0, &result
);
145 EXPECT_TRUE(result
->Equals(value
.get()));
149 TEST(JsonSchemaCompilerSimpleTest
, OnIntegerFiredCreate
) {
151 scoped_ptr
<base::ListValue
> results(OnIntegerFired::Create(5));
152 base::ListValue expected
;
153 expected
.Append(new base::FundamentalValue(5));
154 EXPECT_TRUE(results
->Equals(&expected
));
158 TEST(JsonSchemaCompilerSimpleTest
, OnStringFiredCreate
) {
160 scoped_ptr
<base::ListValue
> results(OnStringFired::Create("yo dawg"));
161 base::ListValue expected
;
162 expected
.Append(new base::StringValue("yo dawg"));
163 EXPECT_TRUE(results
->Equals(&expected
));
167 TEST(JsonSchemaCompilerSimpleTest
, OnTestTypeFiredCreate
) {
169 TestType some_test_type
;
170 scoped_ptr
<base::DictionaryValue
> expected
= CreateTestTypeDictionary();
171 ASSERT_TRUE(expected
->GetDouble("number", &some_test_type
.number
));
172 ASSERT_TRUE(expected
->GetString("string", &some_test_type
.string
));
173 ASSERT_TRUE(expected
->GetInteger("integer", &some_test_type
.integer
));
174 ASSERT_TRUE(expected
->GetBoolean("boolean", &some_test_type
.boolean
));
176 scoped_ptr
<base::ListValue
> results(
177 OnTestTypeFired::Create(some_test_type
));
178 base::DictionaryValue
* result
= NULL
;
179 results
->GetDictionary(0, &result
);
180 EXPECT_TRUE(result
->Equals(expected
.get()));