1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102
|
// Copyright 2024 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/ui/views/hats/hats_next_web_dialog.h"
#include "base/test/metrics/histogram_tester.h"
#include "testing/gtest/include/gtest/gtest.h"
class HatsNextWebDialogTest : public testing::Test {
public:
HatsNextWebDialogTest() = default;
};
TEST_F(HatsNextWebDialogTest, ParseSurveyQuestionAnswer) {
int question;
std::vector<int> answers;
// Incomplete answers
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1-", &question, &answers));
// Invalid integers.
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-a-1,2,3", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1-a", &question, &answers));
// Out of range
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer--1-1,2,3", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1--1", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-0-1,2,3", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-11-1", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1-101", &question, &answers));
// Overflow int.
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-2147483648-a", &question, &answers));
EXPECT_FALSE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1-2147483648", &question, &answers));
EXPECT_TRUE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-1-10", &question, &answers));
EXPECT_EQ(question, 1);
EXPECT_EQ(answers.size(), 1UL);
EXPECT_EQ(answers[0], 10);
answers.clear();
EXPECT_TRUE(HatsNextWebDialog::ParseSurveyQuestionAnswer(
"answer-2-1,2", &question, &answers));
EXPECT_EQ(question, 2);
EXPECT_EQ(answers.size(), 2UL);
EXPECT_EQ(answers[0], 1);
EXPECT_EQ(answers[1], 2);
}
TEST_F(HatsNextWebDialogTest, EncodeUkmQuestionAnswers) {
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({0}),
static_cast<uint64_t>(0));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({}),
static_cast<uint64_t>(0));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1}),
static_cast<uint64_t>(0b1));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({2}),
static_cast<uint64_t>(0b10));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 2}),
static_cast<uint64_t>(0b11));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({3}),
static_cast<uint64_t>(0b100));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 3}),
static_cast<uint64_t>(0b101));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({2, 3}),
static_cast<uint64_t>(0b110));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 2, 3}),
static_cast<uint64_t>(0b111));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({4}),
static_cast<uint64_t>(0b1000));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 4}),
static_cast<uint64_t>(0b1001));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({2, 4}),
static_cast<uint64_t>(0b1010));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 2, 4}),
static_cast<uint64_t>(0b1011));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({3, 4}),
static_cast<uint64_t>(0b1100));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 3, 4}),
static_cast<uint64_t>(0b1101));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({2, 3, 4}),
static_cast<uint64_t>(0b1110));
EXPECT_EQ(HatsNextWebDialog::EncodeUkmQuestionAnswers({1, 2, 3, 4}),
static_cast<uint64_t>(0b1111));
}
|