Files
mist/mist-test/src/items/impl_test.mist
T

81 lines
1.1 KiB
Plaintext

pub module impl_test;
struct Vector2
{
i32 x;
i32 y;
}
impl Vector2
{
pub i32 magnitude(&self)
{
self.x * self.x + self.y * self.y
}
}
pub void test_inherent_impl()
{
let v = Vector2 {
x: 3,
y: 4,
};
assert_eq!(v.magnitude(), 25);
}
trait Display
{
String display(&self);
}
impl Display for Vector2
{
String display(&self)
{
format!("({}, {})", self.x, self.y)
}
}
pub void test_trait_impl_block()
{
let v = Vector2 {
x: 1,
y: 2,
};
let s = v.display();
assert_eq!(s.len() > 0, true);
}
impl Vector2
{
pub Vector2 add(&self, Vector2 other)
{
Vector2 {
x: self.x + other.x,
y: self.y + other.y,
}
}
}
pub void test_multiple_impls()
{
let a = Vector2 {
x: 1,
y: 2,
};
let b = Vector2 {
x: 3,
y: 4,
};
let c = a.add(b);
assert_eq!(c.x, 4);
assert_eq!(c.y, 6);
}
pub void run_tests()
{
test_inherent_impl();
test_trait_impl_block();
test_multiple_impls();
}