// enum_iter.vr — demonstrates for-in over enum types

enum Color {
	red
	green
	blue
}

enum Day {
	monday
	tuesday
	wednesday
	thursday
	friday
	saturday
	sunday
}

fn main() {
	// iterate over Color variants
	println("Colors:")
	for c in Color {
		print("  ")
		println(c.to_string())
	}
	
	// iterate and use count
	mut total = 0
	for c in Color {
		total = total + c.count()
	}
	assert total == 9 // 3 + 3 + 3
	println("Sum of counts: 9")
	
	// iterate and use to_string in a match
	for d in Day {
		if d == Day.saturday or d == Day.sunday {
			println(d.to_string() + " is weekend")
		}
	}
	
	// break and continue work
	mut weekdays = 0
	for d in Day {
		if d == Day.saturday {
			break
		}
		weekdays = weekdays + 1
	}
	assert weekdays == 5
	println("Weekday count: 5")
	
	// collect variant indices
	let indices = []
	for c in Color {
		push(indices, c)
	}
	assert indices[0] == 0
	assert indices[1] == 1
	assert indices[2] == 2
	println("Indices: 0, 1, 2")
	
	println("All enum iteration assertions passed!")
}
