module sim

fn test_add() {
	v := vector(
		x: -0.016957230930171364
		y: -0.02937078552673521
		z: 0.002311063475327252
	)
	result := v + v
	expected := vector(
		x: -0.03391446186034273
		y: -0.05874157105347042
		z: 0.004622126950654504
	)
	assert result == expected
}

fn test_dot() {
	v := vector(
		x: -0.016957230930171364
		y: -0.02937078552673521
		z: 0.002311063475327252
	)
	result := v * v
	expected := 0.0011555317376636305
	assert result == expected
}

fn test_scale() {
	v := vector(
		x: -0.016957230930171364
		y: -0.02937078552673521
		z: 0.002311063475327252
	)
	result := v.scale(2.0)
	expected := vector(
		x: -0.03391446186034273
		y: -0.05874157105347042
		z: 0.004622126950654504
	)
	assert result == expected
}

fn test_norm_squared() {
	v := vector(
		x: -0.016957230930171364
		y: -0.02937078552673521
		z: 0.002311063475327252
	)
	result := v.norm_squared()
	expected := 0.0011555317376636305
	assert result == expected
}

fn test_norm() {
	v := vector(
		x: -0.016957230930171364
		y: -0.02937078552673521
		z: 0.002311063475327252
	)
	result := v.norm()
	expected := 0.033993113091678295
	assert result == expected
}