// Copyright (c) 2010 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "chrome/browser/chromeos/network_message_observer.h"
#include "base/time.h"
#include "testing/gtest/include/gtest/gtest.h"
namespace chromeos {
namespace {
CellularDataPlan CreateDataPlan(CellularDataPlanType type, int64 start_sec,
int64 end_sec, int64 bytes, int64 used) {
CellularDataPlan plan;
plan.plan_type = type;
plan.plan_start_time = base::Time::FromDoubleT(start_sec);
plan.plan_end_time = base::Time::FromDoubleT(end_sec);
plan.plan_data_bytes = bytes;
plan.data_bytes_used = used;
return plan;
}
} // namespace
// Test the code that checks if a data plan is an applicable backup plan.
TEST(NetworkMessageObserverTest, TestIsApplicableBackupPlan) {
// IsApplicableBackupPlan returns true if:
// (unlimited OR used bytes < max bytes) AND
// ((start time - 1 sec) <= end time of currently active plan).
// Current plan that ends at 100.
CellularDataPlan plan =
CreateDataPlan(CELLULAR_DATA_PLAN_UNLIMITED, 0, 100, 0, 0);
// Test unlimited plans.
CellularDataPlan time_50 =
CreateDataPlan(CELLULAR_DATA_PLAN_UNLIMITED, 50, 500, 0, 0);
CellularDataPlan time_100 =
CreateDataPlan(CELLULAR_DATA_PLAN_UNLIMITED, 100, 500, 0, 0);
CellularDataPlan time_101 =
CreateDataPlan(CELLULAR_DATA_PLAN_UNLIMITED, 101, 500, 0, 0);
CellularDataPlan time_102 =
CreateDataPlan(CELLULAR_DATA_PLAN_UNLIMITED, 102, 500, 0, 0);
EXPECT_TRUE(NetworkMessageObserver::IsApplicableBackupPlan(&plan, &time_50));
EXPECT_TRUE(NetworkMessageObserver::IsApplicableBackupPlan(&plan, &time_100));
EXPECT_TRUE(NetworkMessageObserver::IsApplicableBackupPlan(&plan, &time_101));
EXPECT_FALSE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&time_102));
// Test data plans.
CellularDataPlan data_0_0 =
CreateDataPlan(CELLULAR_DATA_PLAN_METERED_PAID, 100, 500, 0, 0);
CellularDataPlan data_100_0 =
CreateDataPlan(CELLULAR_DATA_PLAN_METERED_PAID, 100, 500, 100, 0);
CellularDataPlan data_100_50 =
CreateDataPlan(CELLULAR_DATA_PLAN_METERED_PAID, 100, 500, 100, 50);
CellularDataPlan data_100_100 =
CreateDataPlan(CELLULAR_DATA_PLAN_METERED_PAID, 100, 500, 100, 100);
CellularDataPlan data_100_200 =
CreateDataPlan(CELLULAR_DATA_PLAN_METERED_PAID, 100, 500, 100, 200);
CellularDataPlan data_100_0_gap =
CreateDataPlan(CELLULAR_DATA_PLAN_METERED_PAID, 200, 500, 100, 0);
EXPECT_FALSE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&data_0_0));
EXPECT_TRUE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&data_100_0));
EXPECT_TRUE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&data_100_50));
EXPECT_FALSE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&data_100_100));
EXPECT_FALSE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&data_100_200));
EXPECT_FALSE(NetworkMessageObserver::IsApplicableBackupPlan(&plan,
&data_100_0_gap));
}
} // namespace chromeos