Slide 35 de 37

Testes

type Item {
	name:  Str
	price: Int
}

func total(items: Item[]): Int {
	mut sum := 0
	for each item in items {
		sum = sum + item.price
	}
	return sum
}

test "um carrinho vazio não custa nada" {
	Item[0] empty = []
	assert total(empty) == 0
}

test "dois itens se somam" {
	assert total([Item("wax", 5), Item("comb", 3)]) == 8
}
Um test é uma declaração de nível superior, nomeada em prosa porque o nome é documentação, não algo que alguma coisa chama. `hive test entrypoint.hive` roda todo test que o entrypoint alcança, sem framework e sem vocabulário de asserção além do assert que a linguagem já tem — e reporta cobertura, incluindo quais declarações nunca foram exercitadas, em toda execução sem uma flag separada. Este arquivo não tem main algum — um arquivo só com tests não precisa de um — então ele roda com `hive test`, não com `hive run`.