1c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar/* 2c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * Copyright 2014 The Android Open Source Project 3c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * 4c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * Licensed under the Apache License, Version 2.0 (the "License"); 5c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * you may not use this file except in compliance with the License. 6c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * You may obtain a copy of the License at 7c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * 8c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * http://www.apache.org/licenses/LICENSE-2.0 9c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * 10c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * Unless required by applicable law or agreed to in writing, software 11c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * distributed under the License is distributed on an "AS IS" BASIS, 12c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * See the License for the specific language governing permissions and 14c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar * limitations under the License. 15c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar */ 16c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 17c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar//#define LOG_NDEBUG 0 18c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar#define LOG_TAG "Utils_test" 19c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 20c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar#include <gtest/gtest.h> 21c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 22c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar#include <media/stagefright/foundation/ADebug.h> 23f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar#include <media/stagefright/foundation/AStringUtils.h> 24c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar#include <media/stagefright/foundation/AUtils.h> 25fba972f9d7f87c47ac0820b7f99420acc7e5dc36Lajos Molnar#include <media/stagefright/Utils.h> // for FOURCC 26c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 27c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnarnamespace android { 28c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 29c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnarclass UtilsTest : public ::testing::Test { 30c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar}; 31c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 32f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos MolnarTEST_F(UtilsTest, TestStringUtils) { 33f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_EQ(AStringUtils::Compare("Audio", "AudioExt", 5, false), 0); 34f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_EQ(AStringUtils::Compare("Audio", "audiOExt", 5, true), 0); 35f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_NE(AStringUtils::Compare("Audio", "audioExt", 5, false), 0); 36f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_NE(AStringUtils::Compare("Audio", "AudiOExt", 5, false), 0); 37f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 38f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_LT(AStringUtils::Compare("Audio", "AudioExt", 7, false), 0); 39f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_LT(AStringUtils::Compare("Audio", "audiOExt", 7, true), 0); 40f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 41f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_GT(AStringUtils::Compare("AudioExt", "Audio", 7, false), 0); 42f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_GT(AStringUtils::Compare("audiOext", "Audio", 7, true), 0); 43f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 44f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_LT(AStringUtils::Compare("Audio", "Video", 5, false), 0); 45f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_LT(AStringUtils::Compare("Audio1", "Audio2", 6, false), 0); 46f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_LT(AStringUtils::Compare("audio", "VIDEO", 5, true), 0); 47f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_LT(AStringUtils::Compare("audio1", "AUDIO2", 6, true), 0); 48f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 49f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_GT(AStringUtils::Compare("Video", "Audio", 5, false), 0); 50f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_GT(AStringUtils::Compare("Audio2", "Audio1", 6, false), 0); 51f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_GT(AStringUtils::Compare("VIDEO", "audio", 5, true), 0); 52f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_GT(AStringUtils::Compare("AUDIO2", "audio1", 6, true), 0); 53f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 54f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("AudioA", 5, "AudioB", 5, false)); 55f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("AudioA", 6, "AudioA", 5, false)); 56f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("AudioA", 5, "AudioA", 6, false)); 57f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("AudioA", 5, "audiOB", 5, false)); 58f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("AudioA", 5, "audiOB", 5, true)); 59f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("AudioA", 6, "AudioA", 5, true)); 60f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("AudioA", 5, "AudioA", 6, true)); 61f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 62f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*1", 1, "String8", 6, true)); 63f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*1", 1, "String8", 6, false)); 64f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*1", 1, "String8", 0, true)); 65f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*1", 1, "String8", 0, false)); 66f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 67f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*ring1", 5, "String8", 6, false)); 68f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*ring2", 5, "STRING8", 6, true)); 69f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("*ring4", 5, "StRing8", 6, false)); 70f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("*ring5", 5, "StrinG8", 6, false)); 71f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("*ring8", 5, "String8", 7, false)); 72f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("*ring8", 5, "String8", 7, true)); 73f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 74f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("Str*1", 4, "String8", 6, false)); 75f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("Str*2", 4, "STRING8", 6, true)); 76f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*3", 4, "string8", 6, false)); 77f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*4", 4, "StRing8", 6, false)); 78f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*5", 4, "AString8", 7, false)); 79f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*6", 4, "AString8", 7, true)); 80f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 81f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("Str*ng1", 6, "String8", 6, false)); 82f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng2", 6, "string8", 6, false)); 83f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng3", 6, "StRing8", 6, false)); 84f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng4", 6, "StriNg8", 6, false)); 85f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng5", 6, "StrinG8", 6, false)); 86f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("Str*ng6", 6, "STRING8", 6, true)); 87f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng8", 6, "AString8", 7, false)); 88f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng1", 6, "String16", 7, false)); 89f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("Str*ing9", 7, "String8", 6, false)); 90f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ringA", 8, "String8", 6, false)); 91f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng8", 6, "AString8", 7, true)); 92f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ng1", 6, "String16", 7, true)); 93f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("Str*ing9", 7, "STRING8", 6, true)); 94f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("Str*ringA", 8, "String8", 6, true)); 95f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 96f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*str*str1", 8, "bestrestroom", 9, false)); 97f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*str*str1", 8, "bestrestrestroom", 13, false)); 98f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("*str*stro", 8, "bestrestrestroom", 14, false)); 99f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*str*str*1", 9, "bestrestrestroom", 14, false)); 100f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*str*str1", 8, "beSTReSTRoom", 9, true)); 101f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*str*str1", 8, "beSTRestreSTRoom", 13, true)); 102f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_FALSE(AStringUtils::MatchesGlob("*str*stro", 8, "bestreSTReSTRoom", 14, true)); 103f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar ASSERT_TRUE(AStringUtils::MatchesGlob("*str*str*1", 9, "bestreSTReSTRoom", 14, true)); 104f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar} 105f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 106f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos MolnarTEST_F(UtilsTest, TestDebug) { 107f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar#define LVL(x) (ADebug::Level)(x) 1089903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("video", "", LVL(5)), LVL(5)); 1099903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("video", " \t \n ", LVL(2)), LVL(2)); 1109903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("video", "3", LVL(5)), LVL(3)); 1119903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("video", "3:*deo", LVL(5)), LVL(3)); 1129903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString( 113f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar "video", "\t\n 3 \t\n:\t\n video \t\n", LVL(5)), LVL(3)); 1149903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("video", "3:*deo,2:vid*", LVL(5)), LVL(2)); 1159903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString( 116f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar "avideo", "\t\n 3 \t\n:\t\n avideo \t\n,\t\n 2 \t\n:\t\n video \t\n", LVL(5)), LVL(3)); 1179903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString( 118f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar "audio.omx", "4:*omx,3:*d*o*,2:audio*", LVL(5)), LVL(2)); 1199903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString( 120f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar "video.omx", "4:*omx,3:*d*o*,2:audio*", LVL(5)), LVL(3)); 1219903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("video", "4:*omx,3:*d*o*,2:audio*", LVL(5)), LVL(3)); 1229903589eacc655481acebc5b85632b3b84418bc9Lajos Molnar ASSERT_EQ(ADebug::GetLevelFromSettingsString("omx", "4:*omx,3:*d*o*,2:audio*", LVL(5)), LVL(4)); 123f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar#undef LVL 124f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar} 125f296e2b262d2a8f7c570eaed454a28cca99eb976Lajos Molnar 126c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos MolnarTEST_F(UtilsTest, TestFourCC) { 127c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(FOURCC('s', 't', 'm' , 'u'), 'stmu'); 128c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar} 129c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 130c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos MolnarTEST_F(UtilsTest, TestMathTemplates) { 131c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-10, -4), 3); 132c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-11, -4), 3); 133c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-12, -4), 3); 134c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-13, -4), 3); 135c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-14, -4), 4); 136c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 137c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(10, -4), -3); 138c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(11, -4), -3); 139c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(12, -4), -3); 140c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(13, -4), -3); 141c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(14, -4), -4); 142c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 143c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-10, 4), -3); 144c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-11, 4), -3); 145c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-12, 4), -3); 146c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-13, 4), -3); 147c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(-14, 4), -4); 148c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 149c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(10, 4), 3); 150c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(11, 4), 3); 151c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(12, 4), 3); 152c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(13, 4), 3); 153c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divRound(14, 4), 4); 154c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 155c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(-11, -4), 3); 156c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(-12, -4), 3); 157c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(-13, -4), 4); 158c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 159c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(11, -4), -2); 160c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(12, -4), -3); 161c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(13, -4), -3); 162c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 163c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(-11, 4), -2); 164c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(-12, 4), -3); 165c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(-13, 4), -3); 166c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 167c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(11, 4), 3); 168c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(12, 4), 3); 169c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(divUp(13, 4), 4); 170c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 171a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar ASSERT_EQ(align(11, 4), 12); 172a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar ASSERT_EQ(align(12, 4), 12); 173a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar ASSERT_EQ(align(13, 4), 16); 174a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar ASSERT_EQ(align(11, 8), 16); 175a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar ASSERT_EQ(align(11, 2), 12); 176a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar ASSERT_EQ(align(11, 1), 11); 177a0940a569f2bc24b00dc10ce0fa7658b1dc3a3a5Lajos Molnar 178c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(abs(5L), 5L); 179c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(abs(-25), 25); 180c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 181c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(min(5.6f, 6.0f), 5.6f); 182c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(min(6.0f, 5.6f), 5.6f); 183c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(min(-4.3, 8.6), -4.3); 184c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(min(8.6, -4.3), -4.3); 185c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 186c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(max(5.6f, 6.0f), 6.0f); 187c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(max(6.0f, 5.6f), 6.0f); 188c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(max(-4.3, 8.6), 8.6); 189c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(max(8.6, -4.3), 8.6); 190c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 191bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 86u, -44)); 192bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 87u, -43)); 193bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 88u, -1)); 194bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 89u, 0)); 195bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 90u, 46)); 196bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 91u, 48)); 197bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 92u, 50)); 198bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 199bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43, 86u, 42)); 200bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43, 87u, 43)); 201bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43, 88u, 44)); 202bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43, 89u, 131)); 203bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43, 90u, 133)); 204bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43, 91u, 135)); 205bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 206bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 86u, 42u)); 207bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 85u, 43u)); 208bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 84u, 44u)); 209bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 83u, 125u)); 210bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 82u, 125u)); 211bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 81u, 125u)); 212bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 213bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, ~0u, 43)); 214bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, ~0u, 44)); 215bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, ~0u, ~0)); 216bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, ~0u, 41)); 217bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, ~0u, 40)); 218bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 219bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, ~0u, 43u)); 220bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, ~0u, 41u)); 221bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, ~0u, 40u)); 222bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, ~0u, ~0u)); 223bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 224bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 86u, -44, 0u)); 225bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 86u, -44, 1u)); 226bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 86u, -44, 2u)); 227bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 86u, -44, ~0u)); 228bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 87u, -43, 0u)); 229bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 87u, -43, 1u)); 230bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 87u, -43, 86u)); 231bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 87u, -43, 87u)); 232bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 87u, -43, 88u)); 233bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 87u, -43, ~0u)); 234bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 88u, -1, 0u)); 235bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 88u, -1, 45u)); 236bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 88u, -1, 46u)); 237bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 88u, -1, 47u)); 238bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 88u, -1, ~3u)); 239bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 90u, 46, 0u)); 240bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(-43, 90u, 46, 1u)); 241bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 90u, 46, 2u)); 242bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 91u, 48, 0u)); 243bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 91u, 48, 2u)); 244bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 91u, 48, ~6u)); 245bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 92u, 50, 0u)); 246bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(-43, 92u, 50, 1u)); 247bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 248bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 86u, 42u, 0u)); 249bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 86u, 42u, 1u)); 250bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 86u, 42u, 2u)); 251bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 86u, 42u, ~0u)); 252bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 87u, 43u, 0u)); 253bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 87u, 43u, 1u)); 254bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 87u, 43u, 86u)); 255bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 87u, 43u, 87u)); 256bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 87u, 43u, 88u)); 257bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 87u, 43u, ~0u)); 258bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 88u, 60u, 0u)); 259bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 88u, 60u, 70u)); 260bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 88u, 60u, 71u)); 261bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 88u, 60u, 72u)); 262bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 88u, 60u, ~3u)); 263bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 90u, 132u, 0u)); 264bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_TRUE(isInRange(43u, 90u, 132u, 1u)); 265bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 90u, 132u, 2u)); 266bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 91u, 134u, 0u)); 267bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 91u, 134u, 2u)); 268bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 91u, 134u, ~6u)); 269bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 92u, 136u, 0u)); 270bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar ASSERT_FALSE(isInRange(43u, 92u, 136u, 1u)); 271bfed843041b6aaec13ee19996748a7a1476db9c8Lajos Molnar 272c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(periodicError(124, 100), 24); 273c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(periodicError(288, 100), 12); 274c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(periodicError(-345, 100), 45); 275c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(periodicError(-493, 100), 7); 276c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(periodicError(-550, 100), 50); 277c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar ASSERT_EQ(periodicError(-600, 100), 0); 278c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar} 279c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar 280c416becd966945fca5fa7fb45ac51f84d1d8cd20Lajos Molnar} // namespace android 281