1// Copyright (c) 2013 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/test/chromedriver/chrome/browser_info.h"
6
7#include "testing/gtest/include/gtest/gtest.h"
8
9namespace {
10
11void AssertParseBrowserInfoFails(const std::string& data) {
12  BrowserInfo browser_info;
13  Status status = ParseBrowserInfo(data, &browser_info);
14  ASSERT_TRUE(status.IsError());
15}
16
17}  // namespace
18
19TEST(ParseBrowserInfo, InvalidJSON) {
20  AssertParseBrowserInfoFails("[");
21}
22
23TEST(ParseBrowserInfo, NonDict) {
24  AssertParseBrowserInfoFails("[]");
25}
26
27TEST(ParseBrowserInfo, NoBrowserKey) {
28  AssertParseBrowserInfoFails("{}");
29}
30
31TEST(ParseBrowserInfo, BlinkVersionContainsSvnRevision) {
32  std::string data("{\"Browser\": \"Chrome/37.0.2062.124\","
33                   " \"WebKit-Version\": \"537.36 (@181352)\"}");
34  BrowserInfo browser_info;
35  Status status = ParseBrowserInfo(data, &browser_info);
36  ASSERT_TRUE(status.IsOk());
37  ASSERT_EQ("chrome", browser_info.browser_name);
38  ASSERT_EQ("37.0.2062.124", browser_info.browser_version);
39  ASSERT_EQ(2062, browser_info.build_no);
40  ASSERT_EQ(181352, browser_info.blink_revision);
41}
42
43TEST(ParseBrowserInfo, BlinkVersionContainsGitHash) {
44  std::string data("{\"Browser\": \"Chrome/37.0.2062.124\","
45                   " \"WebKit-Version\":"
46                   " \"537.36 (@28f741cfcabffe68a9c12c4e7152569c906bd88f)\"}");
47  BrowserInfo browser_info;
48  const int default_blink_revision = browser_info.blink_revision;
49  Status status = ParseBrowserInfo(data, &browser_info);
50  ASSERT_TRUE(status.IsOk());
51  ASSERT_EQ("chrome", browser_info.browser_name);
52  ASSERT_EQ("37.0.2062.124", browser_info.browser_version);
53  ASSERT_EQ(2062, browser_info.build_no);
54  ASSERT_EQ(default_blink_revision, browser_info.blink_revision);
55}
56
57TEST(ParseBrowserString, Chrome) {
58  std::string browser_name;
59  std::string browser_version;
60  int build_no;
61  Status status = ParseBrowserString(
62      "Chrome/37.0.2062.124", &browser_name, &browser_version, &build_no);
63  ASSERT_TRUE(status.IsOk());
64  ASSERT_EQ("chrome", browser_name);
65  ASSERT_EQ("37.0.2062.124", browser_version);
66  ASSERT_EQ(2062, build_no);
67}
68
69TEST(ParseBlinkVersionString, GitHash) {
70  int rev = -1;
71  Status status = ParseBlinkVersionString(
72      "537.36 (@28f741cfcabffe68a9c12c4e7152569c906bd88f)", &rev);
73  ASSERT_TRUE(status.IsOk());
74  ASSERT_EQ(-1, rev);
75}
76
77TEST(ParseBlinkVersionString, SvnRevision) {
78  int blink_revision = -1;
79  Status status = ParseBlinkVersionString("537.36 (@159105)", &blink_revision);
80  ASSERT_TRUE(status.IsOk());
81  ASSERT_EQ(159105, blink_revision);
82}
83
84TEST(IsGitHash, GitHash) {
85  ASSERT_TRUE(IsGitHash("28f741cfcabffe68a9c12c4e7152569c906bd88f"));
86}
87
88TEST(IsGitHash, ShortGitHash) {
89  ASSERT_TRUE(IsGitHash("1493aa5"));
90}
91
92TEST(IsGitHash, GitHashWithUpperCaseCharacters) {
93  ASSERT_TRUE(IsGitHash("28F741CFCABFFE68A9C12C4E7152569C906BD88F"));
94}
95
96TEST(IsGitHash, SvnRevision) {
97  ASSERT_FALSE(IsGitHash("159105"));
98}
99