Exercise: Test Calculator


Given the following program with the calc function, write some tests verifying the function.


examples/test-calc/calc.go
package main

import (
    "fmt"
    "os"
    "strconv"
)

func main() {
    //fmt.Println(os.Args)
    if len(os.Args) != 4 {
        fmt.Println("Usage: calc.go NUMBER OPERATOR NUMBER")
        os.Exit(0)
    }

    var a, _ = strconv.Atoi(os.Args[1])
    var op = os.Args[2]
    var b, _ = strconv.Atoi(os.Args[3])
    result, err := calc(a, op, b)
    if err != nil {
        fmt.Println(err)
        os.Exit(1)
    }
    fmt.Println(result)
}

func calc(a int, op string, b int) (int, error) {
    var result int

    if op == "+" {
        result = a + b
    } else if op == "*" {
        result = a * b
    } else if op == "/" {
        if b == 0 {
            return 0, fmt.Errorf("Cannot devide by 0")
        }
        result = a / b
    } else if op == "-" {
        result = a - b
    } else {
        return 0, fmt.Errorf("operator '%s' is not handled", op)
    }
    return result, nil
}