1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "cc/base/util.h" 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "testing/gtest/include/gtest/gtest.h" 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace cc { 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)namespace { 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(UtilTest, RoundUp) { 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (int multiplier = 1; multiplier <= 10; ++multiplier) { 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Try attempts in descending order, so that we can 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // determine the correct value before it's needed. 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int correct; 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (int attempt = 5 * multiplier; attempt >= -5 * multiplier; --attempt) { 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if ((attempt % multiplier) == 0) 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) correct = attempt; 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(correct, RoundUp(attempt, multiplier)) 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "attempt=" << attempt << " multiplier=" << multiplier; 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (unsigned multiplier = 1; multiplier <= 10; ++multiplier) { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Try attempts in descending order, so that we can 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // determine the correct value before it's needed. 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned correct; 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (unsigned attempt = 5 * multiplier; attempt > 0; --attempt) { 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if ((attempt % multiplier) == 0) 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) correct = attempt; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(correct, RoundUp(attempt, multiplier)) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "attempt=" << attempt << " multiplier=" << multiplier; 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 35c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(0u, RoundUp(0u, multiplier)) 36c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "attempt=0 multiplier=" << multiplier; 37c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 38c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 39c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 40c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)TEST(UtilTest, RoundDown) { 41c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (int multiplier = 1; multiplier <= 10; ++multiplier) { 42c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Try attempts in ascending order, so that we can 43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // determine the correct value before it's needed. 44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) int correct; 45c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (int attempt = -5 * multiplier; attempt <= 5 * multiplier; ++attempt) { 46c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if ((attempt % multiplier) == 0) 47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) correct = attempt; 48c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(correct, RoundDown(attempt, multiplier)) 49c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "attempt=" << attempt << " multiplier=" << multiplier; 50c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 51c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 52c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 53c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (unsigned multiplier = 1; multiplier <= 10; ++multiplier) { 54c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Try attempts in ascending order, so that we can 55c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // determine the correct value before it's needed. 56c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) unsigned correct; 57c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) for (unsigned attempt = 0; attempt <= 5 * multiplier; ++attempt) { 58c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if ((attempt % multiplier) == 0) 59c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) correct = attempt; 60c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) EXPECT_EQ(correct, RoundDown(attempt, multiplier)) 61c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "attempt=" << attempt << " multiplier=" << multiplier; 62c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 66c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} // namespace cc 68