1dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania/* -*- c++ -*- */ 2dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania/* 3dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * Copyright (C) 2010 The Android Open Source Project 4dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * All rights reserved. 5dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * 6dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * Redistribution and use in source and binary forms, with or without 7dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * modification, are permitted provided that the following conditions 8dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * are met: 9dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * * Redistributions of source code must retain the above copyright 10dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * notice, this list of conditions and the following disclaimer. 11dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * * Redistributions in binary form must reproduce the above copyright 12dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * notice, this list of conditions and the following disclaimer in 13dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * the documentation and/or other materials provided with the 14dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * distribution. 15dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * 16dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 17dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 18dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 19dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 20dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 21dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 22dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS 23dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED 24dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, 25dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT 26dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 27dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania * SUCH DAMAGE. 28dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania */ 29dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 30dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania#include "../include/limits" 31dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania#ifndef ANDROID_ASTL_LIMITS__ 32dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania#error "Wrong header included!!" 33dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania#endif 34dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania#include "common.h" 35dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 36dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catanianamespace android { 37dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 38dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Cataniabool testSpecialized() 39dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania{ 40dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<float>::is_specialized); 41dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<double>::is_specialized); 425abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::is_specialized); 435abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long long>::is_specialized); 44dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania return true; 45dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} 46dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 47dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Cataniabool testMin() 48dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania{ 49dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<float>::min() == __FLT_MIN__); 50dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<double>::min() == __DBL_MIN__); 515abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::min() == LONG_MIN); 52dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania return true; 53dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} 54dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 55dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Cataniabool testMax() 56dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania{ 57dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<float>::max() == __FLT_MAX__); 58dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<double>::max() == __DBL_MAX__); 595abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::max() == LONG_MAX); 605abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long long>::max() == LLONG_MAX); 61dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania return true; 62dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} 63dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 64dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Cataniabool testSigned() 65dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania{ 66dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<float>::is_signed); 67dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_TRUE(std::numeric_limits<double>::is_signed); 685abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::is_signed); 695abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long long>::is_signed); 70dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania return true; 71dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} 72dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 73dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Cataniabool testIsInteger() 74dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania{ 75dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_FALSE(std::numeric_limits<float>::is_integer); 76dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania EXPECT_FALSE(std::numeric_limits<double>::is_integer); 775abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::is_integer); 785abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long long>::is_integer); 795abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania return true; 805abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania} 815abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania 825abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Cataniabool testDigits() 835abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania{ 845abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::digits == 32); 855abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long>::digits10 == 10); 865abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long long>::digits == 64); 875abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania EXPECT_TRUE(std::numeric_limits<long long>::digits10 == 19); 88dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania return true; 89dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} 90dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 91dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} // namespace android 92dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania 93dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Cataniaint main(int argc, char **argv) 94dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania{ 95dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania FAIL_UNLESS(testSpecialized); 96dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania FAIL_UNLESS(testMin); 97dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania FAIL_UNLESS(testMax); 98dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania FAIL_UNLESS(testSigned); 99dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania FAIL_UNLESS(testIsInteger); 1005abe6dfaae971d3c0d1c8e3349b0d2b2ae83cc97Nicolas Catania FAIL_UNLESS(testDigits); 101dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania return kPassed; 102dfec9fcb74ce3381af05f54e6ebc2667a6bfb6b8Nicolas Catania} 103