max.pass.cpp 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. //===----------------------------------------------------------------------===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. // test numeric_limits
  10. // max()
  11. #include <limits>
  12. #include <climits>
  13. #include <cwchar>
  14. #include <cfloat>
  15. #include <cassert>
  16. template <class T>
  17. void
  18. test(T expected)
  19. {
  20. assert(std::numeric_limits<T>::max() == expected);
  21. assert(std::numeric_limits<T>::is_bounded);
  22. assert(std::numeric_limits<const T>::max() == expected);
  23. assert(std::numeric_limits<const T>::is_bounded);
  24. assert(std::numeric_limits<volatile T>::max() == expected);
  25. assert(std::numeric_limits<volatile T>::is_bounded);
  26. assert(std::numeric_limits<const volatile T>::max() == expected);
  27. assert(std::numeric_limits<const volatile T>::is_bounded);
  28. }
  29. int main()
  30. {
  31. test<bool>(true);
  32. test<char>(CHAR_MAX);
  33. test<signed char>(SCHAR_MAX);
  34. test<unsigned char>(UCHAR_MAX);
  35. test<wchar_t>(WCHAR_MAX);
  36. #ifndef _LIBCPP_HAS_NO_UNICODE_CHARS
  37. test<char16_t>(USHRT_MAX);
  38. test<char32_t>(UINT_MAX);
  39. #endif // _LIBCPP_HAS_NO_UNICODE_CHARS
  40. test<short>(SHRT_MAX);
  41. test<unsigned short>(USHRT_MAX);
  42. test<int>(INT_MAX);
  43. test<unsigned int>(UINT_MAX);
  44. test<long>(LONG_MAX);
  45. test<unsigned long>(ULONG_MAX);
  46. test<long long>(LLONG_MAX);
  47. test<unsigned long long>(ULLONG_MAX);
  48. test<float>(FLT_MAX);
  49. test<double>(DBL_MAX);
  50. test<long double>(LDBL_MAX);
  51. }