enum Color{
    red, green, blue
}

fn test_match_integers() {
	// a := 3 
	// mut b := 0 
	// match a {
	//    2 => println('two') 
	//    3 => println('three') 
	//         b = 3 
	//    4 => println('four') 
	// else => println('???') 
	// } 
	// assert b == 3 

    assert match 2 {
        1 => {2}
        2 => {3}
        else => {5}
    } == 3
    
    assert match 0 {
        1 => {2}
        2 => {3}
        else => 5
    } == 5

    assert match 1 {
        else => {5}
    } == 5
    
    mut a := 0
    match 2 {
        0 => {a = 1}
        1 => {a = 2}
        else => {
            a = 3
            println('a is $a')
        }
    }
    assert a == 3
    
    a = 0
    match 1 {
        0 => {a = 1}
        1 => {
            a = 2
            a = a + 2
            a = a + 2
        }
    }
    assert a == 6

    a = 0
    match 1 {
        else => {
            a = -2
        }
    }
    assert a == -2
} 

fn test_match_enums(){
    mut b := Color.red
    match b{
        .red => {
            b = .green
        }
        .green => {b = .blue}
        else => {
            println('b is ${b.str()}')
            b = .red
        }
    }
    assert b == .green

    match b{
        .red => {
            b = .green
        }
        else => {
            println('b is ${b.str()}')
            b = .blue
        }
    }
    assert b == .blue
}