Files
3d_globe/test/config_test.rb
T
2026-09-07 12:11:43 -07:00

41 lines
1.4 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_equal "solid", config["shell"]["interior"]
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
def test_rejects_unknown_interior_mode
assert_raises(ArgumentError) { MoonModel::Config.new("shell" => { "interior" => "foam" }) }
end
end