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. 4 5#include "chrome/browser/extensions/api/dial/dial_device_data.h" 6#include "chrome/common/extensions/api/dial.h" 7#include "testing/gtest/include/gtest/gtest.h" 8 9namespace extensions { 10 11namespace { 12 13// Asserts equality between the two objects. 14void ExpectEqual(const DialDeviceData& first, const DialDeviceData& second) { 15 EXPECT_EQ(first.device_id(), second.device_id()); 16 EXPECT_EQ(first.label(), second.label()); 17 EXPECT_EQ(first.device_description_url(), second.device_description_url()); 18 EXPECT_EQ(first.response_time(), second.response_time()); 19 EXPECT_EQ(first.max_age(), second.max_age()); 20 EXPECT_EQ(first.config_id(), second.config_id()); 21} 22 23} // namespace 24 25TEST(DialDeviceDataTest, TestFillDialDevice) { 26 api::dial::DialDevice api_device; 27 28 DialDeviceData device; 29 device.set_device_id("device"); 30 device.set_label("label"); 31 device.set_device_description_url(GURL("http://127.0.0.1/dd.xml")); 32 device.set_config_id(1); 33 34 device.FillDialDevice(&api_device); 35 EXPECT_EQ(api_device.device_label, device.label()); 36 EXPECT_EQ(api_device.device_description_url, 37 device.device_description_url().spec()); 38 EXPECT_EQ(*(api_device.config_id), device.config_id()); 39} 40 41TEST(DialDeviceDataTest, TestUpdateFrom) { 42 DialDeviceData original; 43 original.set_device_id("device_a"); 44 original.set_label("label_a"); 45 original.set_device_description_url(GURL("http://127.0.0.1/dd-a.xml")); 46 original.set_response_time(base::Time::FromInternalValue(1000)); 47 original.set_max_age(100); 48 original.set_config_id(1); 49 50 DialDeviceData new_data; 51 new_data.set_device_id("device_a"); 52 new_data.set_device_description_url(GURL("http://127.0.0.1/dd-a.xml")); 53 new_data.set_response_time(base::Time::FromInternalValue(1000)); 54 new_data.set_max_age(100); 55 new_data.set_config_id(1); 56 57 DialDeviceData original_1(original); 58 EXPECT_FALSE(original_1.UpdateFrom(new_data)); 59 ExpectEqual(original_1, original); 60 61 DialDeviceData original_2(original); 62 new_data.set_max_age(200); 63 new_data.set_response_time(base::Time::FromInternalValue(2000)); 64 EXPECT_FALSE(original_2.UpdateFrom(new_data)); 65 66 EXPECT_EQ("device_a", original_2.device_id()); 67 EXPECT_EQ(GURL("http://127.0.0.1/dd-a.xml"), 68 original_2.device_description_url()); 69 EXPECT_EQ("label_a", original_2.label()); 70 EXPECT_EQ(200, original_2.max_age()); 71 EXPECT_EQ(base::Time::FromInternalValue(2000), original_2.response_time()); 72 EXPECT_EQ(1, original_2.config_id()); 73 74 DialDeviceData original_3(original); 75 new_data.set_device_description_url(GURL("http://127.0.0.2/dd-b.xml")); 76 new_data.set_config_id(2); 77 EXPECT_TRUE(original_3.UpdateFrom(new_data)); 78 79 EXPECT_EQ("device_a", original_3.device_id()); 80 EXPECT_EQ(GURL("http://127.0.0.2/dd-b.xml"), 81 original_3.device_description_url()); 82 EXPECT_EQ("label_a", original_3.label()); 83 EXPECT_EQ(200, original_3.max_age()); 84 EXPECT_EQ(base::Time::FromInternalValue(2000), original_3.response_time()); 85 EXPECT_EQ(2, original_3.config_id()); 86} 87 88TEST(DialDeviceDataTest, TestIsDeviceDescriptionUrl) { 89 EXPECT_TRUE(DialDeviceData::IsDeviceDescriptionUrl( 90 GURL("http://some.device.com/dd.xml"))); 91 EXPECT_TRUE(DialDeviceData::IsDeviceDescriptionUrl( 92 GURL("https://some.device.com/dd.xml"))); 93 EXPECT_TRUE(DialDeviceData::IsDeviceDescriptionUrl( 94 GURL("http://192.168.1.1:1234/dd.xml"))); 95 EXPECT_TRUE(DialDeviceData::IsDeviceDescriptionUrl( 96 GURL("https://192.168.1.1:1234/dd.xml"))); 97 98 EXPECT_FALSE(DialDeviceData::IsDeviceDescriptionUrl(GURL())); 99 EXPECT_FALSE(DialDeviceData::IsDeviceDescriptionUrl(GURL(std::string()))); 100 EXPECT_FALSE( 101 DialDeviceData::IsDeviceDescriptionUrl(GURL("file://path/to/file"))); 102} 103 104} // namespace extensions 105