36 lines
1.2 KiB
Ruby
36 lines
1.2 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
require "test_helper"
|
|
|
|
class ConfigTest < Minitest::Test
|
|
def test_x2d_maxima_and_derived_defaults
|
|
config = MoonModel::Config.new
|
|
assert_in_delta 231.5, config.maximum_diameter("one_piece"), 0.001
|
|
assert_in_delta 463.0, config.maximum_diameter("eight_piece"), 0.001
|
|
assert_in_delta 1.6, config["shell"]["wall_mm"], 0.001
|
|
assert_in_delta 0.8, config["shell"]["minimum_feature_mm"], 0.001
|
|
assert_in_delta 10.0, config["stand"]["base_clearance_mm"], 0.001
|
|
end
|
|
|
|
def test_scale_ratio_uses_lunar_datum
|
|
config = MoonModel::Config.new("size" => { "input" => "scale", "value" => 10_000_000 })
|
|
assert_in_delta 347.48, config.diameter_mm, 0.001
|
|
assert_equal "datum", config["size"]["meaning"]
|
|
assert config.segmented?
|
|
end
|
|
|
|
def test_box_forces_segments
|
|
assert MoonModel::Config.new("purpose" => "box", "size" => { "value" => 80 }).segmented?
|
|
end
|
|
|
|
def test_rejects_bad_color
|
|
assert_raises(ArgumentError) { MoonModel::Config.new("palette" => [{ "name" => "bad", "hex" => "gray" }]) }
|
|
end
|
|
|
|
def test_rejects_negative_stand_clearance
|
|
assert_raises(ArgumentError) do
|
|
MoonModel::Config.new("stand" => { "base_clearance_mm" => -0.1 })
|
|
end
|
|
end
|
|
end
|