core.nbt 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. # value_of
  2. assert_eq(value_of(0), 0)
  3. assert_eq(value_of(1), 1)
  4. assert_eq(value_of(1.2345), 1.2345)
  5. assert_eq(value_of(1 m), 1)
  6. assert_eq(value_of(1.2345 m), 1.2345)
  7. assert_eq(value_of(1 m^2/s), 1)
  8. assert_eq(value_of(1.2345 m^2/s), 1.2345)
  9. # unit_of
  10. assert_eq(unit_of(1), 1)
  11. assert_eq(unit_of(1.2345), 1)
  12. assert_eq(unit_of(1 m), m)
  13. assert_eq(unit_of(1.2345 m), m)
  14. assert_eq(unit_of(1 m^2/s), m^2/s)
  15. assert_eq(unit_of(1.2345 m^2/s), m^2/s)
  16. # has_unit
  17. assert(has_unit(1 m, m))
  18. assert(has_unit(2 m, m))
  19. assert(!has_unit(1 m, cm))
  20. assert(!has_unit(1 m, km))
  21. assert(!has_unit(1 m, ft))
  22. assert(has_unit(0, m))
  23. assert(has_unit(0, cm))
  24. assert(has_unit(0, s))
  25. # is_dimensionless
  26. assert(is_dimensionless(0))
  27. assert(is_dimensionless(1))
  28. assert(is_dimensionless(1 nm/m))
  29. assert(!is_dimensionless(1 m))
  30. assert(!is_dimensionless(1 m/s))
  31. # unit_name
  32. assert_eq(unit_name(0), "")
  33. assert_eq(unit_name(1), "")
  34. assert_eq(unit_name(1 m), "m")
  35. assert_eq(unit_name(1 m^2/s), "m²/s")
  36. # quantity_cast
  37. assert_eq(quantity_cast(1 m, m), 1 m)
  38. assert_eq(quantity_cast(1 nm, m), 1 nm)
  39. assert_eq(quantity_cast(0, m), 0)
  40. # round, round_in
  41. assert_eq(round(1.234), 1)
  42. assert_eq(1.234 m |> round_in(m), 1 m)
  43. assert_eq(1.234 m |> round_in(cm), 123 cm)
  44. assert_eq(1.234 m |> round_in(mm), 1234 mm)
  45. assert_eq(1.234 m |> round_in(10 m), 0)
  46. assert_eq(1.234 m |> round_in(1 m), 1 m)
  47. assert_eq(1.234 m |> round_in(0.1 m), 1.2 m, 1e-9 m)
  48. assert_eq(1.234 m |> round_in(0.01 m), 1.23 m, 1e-9 m)
  49. assert_eq(1234 |> round_in(1000), 1000)
  50. assert_eq(1234 |> round_in(100), 1200)
  51. assert_eq(1234 |> round_in(10), 1230)
  52. assert_eq(1234 |> round_in(1), 1234)
  53. assert_eq(1234 |> round_in(0.1), 1234)
  54. # floor, floor_in
  55. assert_eq(floor(1.2), 1)
  56. assert_eq(floor(1.8), 1)
  57. assert_eq(floor(-1.2), -2)
  58. assert_eq(1.8 m |> floor_in(m), 1 m)
  59. assert_eq(1.8 m |> floor_in(cm), 180 cm)
  60. # ceil, ceil_in
  61. assert_eq(ceil(1.2), 2)
  62. assert_eq(ceil(-1.2), -1)
  63. assert_eq(1.2 m |> ceil_in(m), 2 m)
  64. assert_eq(1.2 m |> ceil_in(cm), 120 cm)
  65. # trunc, trunc_in, fract
  66. assert_eq(trunc(1.2), 1)
  67. assert_eq(trunc(1.8), 1)
  68. assert_eq(trunc(-1.2), -1)
  69. assert_eq(trunc(-1.8), -1)
  70. assert_eq(1.8 m |> trunc_in(m), 1 m)
  71. assert_eq(1.8 m |> trunc_in(cm), 180 cm)
  72. assert_eq(fract(1.2), 0.2, 1e-12)
  73. assert_eq(fract(1.8), 0.8, 1e-12)
  74. assert_eq(fract(0), 0)
  75. assert_eq(fract(1), 0)
  76. assert_eq(fract(1e10), 0)
  77. assert_eq(fract(-1.2), -0.2, 1e-12)
  78. assert_eq(fract(-1.8), -0.8, 1e-12)
  79. assert(is_nan(fract(NaN)))
  80. assert(is_nan(fract(inf)))
  81. # factorial and multi-factorial
  82. assert_eq(7!!, 7 * 5 * 3)
  83. assert_eq((7)!!!, 7 * 4)
  84. assert_eq((7!!!!), 7 * 3)
  85. assert_eq(8!!, 8 * 6 * 4 * 2)
  86. assert_eq(8.0!!!, 8 * 5 * 2)
  87. assert_eq( 8 !!!!, 8 * 4)