yum-mirror/glslang
git clone https://git.yummers.dev/yum-mirror/glslang
e7e4a8ee
main
1// Copyright (c) 2021 Google LLC 2// 3// Licensed under the Apache License, Version 2.0 (the "License"); 4// you may not use this file except in compliance with the License. 5// You may obtain a copy of the License at 6// 7// http://www.apache.org/licenses/LICENSE-2.0 8// 9// Unless required by applicable law or agreed to in writing, software 10// distributed under the License is distributed on an "AS IS" BASIS, 11// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12// See the License for the specific language governing permissions and 13// limitations under the License. 14 15#include <cstdint> 16 17#include <gmock/gmock.h> 18#include "glslang/Include/Common.h" 19 20namespace { 21 22TEST (IsPow2 ,Int_Negative ) { 23EXPECT_EQ (false, glslang::IsPow2 (-5 )); 24EXPECT_EQ (false, glslang::IsPow2 (-1 )); 25EXPECT_EQ (false, glslang::IsPow2 (INT_MIN )); 26EXPECT_EQ (false, glslang::IsPow2 (int64_t (-10 ))); 27} 28 29TEST (IsPow2 ,Zero ) { 30EXPECT_EQ (false, glslang::IsPow2 (0 )); 31EXPECT_EQ (false, glslang::IsPow2 (0u )); 32EXPECT_EQ (false, glslang::IsPow2 (0 )); 33EXPECT_EQ (false, glslang::IsPow2 (uint64_t (0 ))); 34EXPECT_EQ (false, glslang::IsPow2 (int64_t (0 ))); 35} 36 37TEST (IsPow2 ,Int_Positive_PowersOf2 ) { 38EXPECT_EQ (true, glslang::IsPow2 (1 )); 39EXPECT_EQ (true, glslang::IsPow2 (2 )); 40EXPECT_EQ (true, glslang::IsPow2 (4 )); 41EXPECT_EQ (true, glslang::IsPow2 (8 )); 42EXPECT_EQ (true, glslang::IsPow2 (16 )); 43EXPECT_EQ (true, glslang::IsPow2 (32768 )); 44EXPECT_EQ (true, glslang::IsPow2 (65536 )); 45EXPECT_EQ (true, glslang::IsPow2 (2147483648 )); 46} 47 48TEST (IsPow2 ,Int_Positive_NonPowersOf2 ) { 49EXPECT_EQ (false, glslang::IsPow2 (3 )); 50EXPECT_EQ (false, glslang::IsPow2 (5 )); 51EXPECT_EQ (false, glslang::IsPow2 (2147483647 )); 52} 53 54TEST (IsPow2 ,Uint_Positive_PowersOf2 ) { 55EXPECT_EQ (true, glslang::IsPow2 (1u )); 56EXPECT_EQ (true, glslang::IsPow2 (2u )); 57EXPECT_EQ (true, glslang::IsPow2 (4u )); 58EXPECT_EQ (true, glslang::IsPow2 (8u )); 59EXPECT_EQ (true, glslang::IsPow2 (16u )); 60EXPECT_EQ (true, glslang::IsPow2 (32768u )); 61EXPECT_EQ (true, glslang::IsPow2 (65536u )); 62EXPECT_EQ (true, glslang::IsPow2 (2147483648u )); 63} 64 65TEST (IsPow2 ,Uint_Positive_NonPowersOf2 ) { 66EXPECT_EQ (false, glslang::IsPow2 (3u )); 67EXPECT_EQ (false, glslang::IsPow2 (5u )); 68EXPECT_EQ (false, glslang::IsPow2 (2147483647u )); 69} 70 71TEST (IntLog2 ,Int ) { 72EXPECT_EQ (0 , glslang::IntLog2 (1 )); 73EXPECT_EQ (1 , glslang::IntLog2 (2 )); 74EXPECT_EQ (2 , glslang::IntLog2 (4 )); 75EXPECT_EQ (3 , glslang::IntLog2 (8 )); 76EXPECT_EQ (4 , glslang::IntLog2 (16 )); 77EXPECT_EQ (5 , glslang::IntLog2 (32 )); 78EXPECT_EQ (6 , glslang::IntLog2 (64 )); 79EXPECT_EQ (7 , glslang::IntLog2 (128 )); 80EXPECT_EQ (8 , glslang::IntLog2 (256 )); 81EXPECT_EQ (9 , glslang::IntLog2 (512 )); 82EXPECT_EQ (10 , glslang::IntLog2 (1024 )); 83EXPECT_EQ (11 , glslang::IntLog2 (2048 )); 84EXPECT_EQ (12 , glslang::IntLog2 (0x1000 )); 85EXPECT_EQ (13 , glslang::IntLog2 (0x2000 )); 86EXPECT_EQ (14 , glslang::IntLog2 (0x4000 )); 87EXPECT_EQ (15 , glslang::IntLog2 (0x8000 )); 88EXPECT_EQ (16 , glslang::IntLog2 (0x10000 )); 89EXPECT_EQ (17 , glslang::IntLog2 (0x20000 )); 90EXPECT_EQ (18 , glslang::IntLog2 (0x40000 )); 91EXPECT_EQ (19 , glslang::IntLog2 (0x80000 )); 92EXPECT_EQ (20 , glslang::IntLog2 (0x100000 )); 93EXPECT_EQ (21 , glslang::IntLog2 (0x200000 )); 94EXPECT_EQ (22 , glslang::IntLog2 (0x400000 )); 95EXPECT_EQ (23 , glslang::IntLog2 (0x800000 )); 96EXPECT_EQ (24 , glslang::IntLog2 (0x1000000 )); 97EXPECT_EQ (25 , glslang::IntLog2 (0x2000000 )); 98EXPECT_EQ (26 , glslang::IntLog2 (0x4000000 )); 99EXPECT_EQ (27 , glslang::IntLog2 (0x8000000 )); 100EXPECT_EQ (28 , glslang::IntLog2 (0x10000000 )); 101EXPECT_EQ (29 , glslang::IntLog2 (0x20000000 )); 102EXPECT_EQ (30 , glslang::IntLog2 (0x40000000 )); 103} 104 105TEST (IntLog2 ,Uint ) { 106EXPECT_EQ (0 , glslang::IntLog2 (1u )); 107EXPECT_EQ (1 , glslang::IntLog2 (2u )); 108EXPECT_EQ (2 , glslang::IntLog2 (4u )); 109EXPECT_EQ (3 , glslang::IntLog2 (8u )); 110EXPECT_EQ (4 , glslang::IntLog2 (16u )); 111EXPECT_EQ (5 , glslang::IntLog2 (32u )); 112EXPECT_EQ (6 , glslang::IntLog2 (64u )); 113EXPECT_EQ (7 , glslang::IntLog2 (128u )); 114EXPECT_EQ (8 , glslang::IntLog2 (256u )); 115EXPECT_EQ (9 , glslang::IntLog2 (512u )); 116EXPECT_EQ (10 , glslang::IntLog2 (1024u )); 117EXPECT_EQ (11 , glslang::IntLog2 (2048u )); 118EXPECT_EQ (12 , glslang::IntLog2 (0x1000u )); 119EXPECT_EQ (13 , glslang::IntLog2 (0x2000u )); 120EXPECT_EQ (14 , glslang::IntLog2 (0x4000u )); 121EXPECT_EQ (15 , glslang::IntLog2 (0x8000u )); 122EXPECT_EQ (16 , glslang::IntLog2 (0x10000u )); 123EXPECT_EQ (17 , glslang::IntLog2 (0x20000u )); 124EXPECT_EQ (18 , glslang::IntLog2 (0x40000u )); 125EXPECT_EQ (19 , glslang::IntLog2 (0x80000u )); 126EXPECT_EQ (20 , glslang::IntLog2 (0x100000u )); 127EXPECT_EQ (21 , glslang::IntLog2 (0x200000u )); 128EXPECT_EQ (22 , glslang::IntLog2 (0x400000u )); 129EXPECT_EQ (23 , glslang::IntLog2 (0x800000u )); 130EXPECT_EQ (24 , glslang::IntLog2 (0x1000000u )); 131EXPECT_EQ (25 , glslang::IntLog2 (0x2000000u )); 132EXPECT_EQ (26 , glslang::IntLog2 (0x4000000u )); 133EXPECT_EQ (27 , glslang::IntLog2 (0x8000000u )); 134EXPECT_EQ (28 , glslang::IntLog2 (0x10000000u )); 135EXPECT_EQ (29 , glslang::IntLog2 (0x20000000u )); 136EXPECT_EQ (30 , glslang::IntLog2 (0x40000000u )); 137EXPECT_EQ (31 , glslang::IntLog2 (0x80000000u )); 138} 139 140TEST (IntLog2 ,Int64 ) { 141EXPECT_EQ (0 , glslang::IntLog2 (int64_t (1 ))); 142EXPECT_EQ (1 , glslang::IntLog2 (int64_t (2 ))); 143EXPECT_EQ (2 , glslang::IntLog2 (int64_t (4 ))); 144EXPECT_EQ (3 , glslang::IntLog2 (int64_t (8 ))); 145EXPECT_EQ (30 , glslang::IntLog2 (int64_t (0x40000000u ))); 146EXPECT_EQ (31 , glslang::IntLog2 (int64_t (0x80000000u ))); 147EXPECT_EQ (32 , glslang::IntLog2 (int64_t (0x10000 )* int64_t (0x10000 ))); 148EXPECT_EQ (48 , glslang::IntLog2 (int64_t (0x10000 )* int64_t (0x10000 )* int64_t (0x10000 ))); 149EXPECT_EQ (62 , glslang::IntLog2 (int64_t (0x10000 )* int64_t (0x10000 )* int64_t (0x10000 )* int64_t (0x4000 ))); 150} 151 152TEST (IntLog2 ,Uint64 ) { 153EXPECT_EQ (0 , glslang::IntLog2 (uint64_t (1 ))); 154EXPECT_EQ (1 , glslang::IntLog2 (uint64_t (2 ))); 155EXPECT_EQ (2 , glslang::IntLog2 (uint64_t (4 ))); 156EXPECT_EQ (3 , glslang::IntLog2 (uint64_t (8 ))); 157EXPECT_EQ (30 , glslang::IntLog2 (uint64_t (0x40000000u ))); 158EXPECT_EQ (31 , glslang::IntLog2 (uint64_t (0x80000000u ))); 159EXPECT_EQ (32 , glslang::IntLog2 (uint64_t (0x10000 )* uint64_t (0x10000 ))); 160EXPECT_EQ (48 , glslang::IntLog2 (uint64_t (0x10000 )* uint64_t (0x10000 )* uint64_t (0x10000 ))); 161EXPECT_EQ (62 , glslang::IntLog2 (uint64_t (0x10000 )* uint64_t (0x10000 )* uint64_t (0x10000 )* uint64_t (0x4000 ))); 162EXPECT_EQ (63 , glslang::IntLog2 (uint64_t (0x10000 )* uint64_t (0x10000 )* uint64_t (0x10000 )* uint64_t (0x8000 ))); 163} 164 165}// anonymous namespace