let velocity = @dimension.Dimension::length() / @dimension.Dimension::time()
let force = @dimension.Dimension::mass() * velocity / @dimension.Dimension::time()test {
// Velocity has dimension length / time.
let velocity = Dimension::length().div(Dimension::time())
let acceleration = velocity.div(Dimension::time())
assert_eq(acceleration, Dimension::length().div(Dimension::time().pow(2)))
}test {
assert_false(Dimension::amount_of_substance() == Dimension::length())
}test {
let information = Dimension::custom("Info")
assert_true(information.is_same(Dimension::custom("Info")))
assert_false(information.is_same(Dimension::length()))
}test {
assert_true(Dimension::dimensionless().is_dimensionless())
// A ratio of like dimensions is dimensionless.
assert_eq(
Dimension::length().div(Dimension::length()),
Dimension::dimensionless(),
)
}test {
// Velocity is length / time; multiplying back by time gives length.
let v = Dimension::length().div(Dimension::time())
assert_eq(v.mul(Dimension::time()), Dimension::length())
}test {
// Electric charge has dimension current * time.
let charge = Dimension::electric_current().mul(Dimension::time())
assert_false(charge.is_dimensionless())
}test {
assert_true(Dimension::length().div(Dimension::length()).is_dimensionless())
assert_false(Dimension::length().is_dimensionless())
}test {
// Two ways of building the force dimension agree.
let f1 = Dimension::mass()
.mul(Dimension::length())
.div(Dimension::time().pow(2))
let f2 = Dimension::mass().mul(
Dimension::length().div(Dimension::time().pow(2)),
)
assert_true(f1.is_same(f2))
}test {
assert_false(Dimension::length() == Dimension::mass())
}test {
assert_false(Dimension::luminous_intensity() == Dimension::time())
}test {
// Momentum has dimension mass * length / time.
let momentum = Dimension::mass()
.mul(Dimension::length())
.div(Dimension::time())
assert_false(momentum.is_dimensionless())
}test {
// Area is length * length.
assert_eq(
Dimension::length().mul(Dimension::length()),
Dimension::length().pow(2),
)
}test {
// Volume is length^3.
let volume = Dimension::length().pow(3)
assert_eq(
volume,
Dimension::length().mul(Dimension::length()).mul(Dimension::length()),
)
}test {
assert_false(Dimension::temperature() == Dimension::mass())
}A runtime dimension-checked physical quantity and unit system for MoonBit.