Simple Calculator Project

Module Objectives

  • Creating a simple project

  • Adding code

  • Uploading our code to GitLab

  • Writing test cases to check for failed and successful builds

Creating a Project Repository

Now that we have everything set up, we can start making projects. Start by logging into your normal user (if you haven't already), then go to Projects -> New Project. You can remove the README.

Once it's been created, git clone your project into a directory

Making a simple calculator

To test if our runner works, we will create a simple program which we can upload then run tests and configure pipelines for.

Let's make a simple calculator. I'll be using Go for this example

calculator.go
package main
import "fmt"


func Add(x, y int) (res int) {
	return x + y
}


func Subtract(x, y int) (res int) {
	return x - y
}


func main() {
	fmt.Println("Addition: ", Add(1, 2))
	fmt.Println("Subtraction: ", Subtract(4, 2))
}

Test this by running go run calculator.go

Addition:  3
Subtraction:  2

Now that it works, we can push our demo app to our repository

> git switch -c main
> git add .
> git commit -m "Calculator Demo"
> git push origin main

Writing Test Cases

Now that we have a functioning program, we can write a test case to check whether the values are acceptable, if not it will fail the build. We will reuse the code above for this

Reference

calculator.go
package main
import "fmt"


func Add(x, y int) (res int) {
	return x + y
}


func Subtract(x, y int) (res int) {
	return x - y
}


func main() {
	fmt.Println("Addition: ", Add(1, 2))
	fmt.Println("Subtraction: ", Subtract(4, 2))
}
calculator_test.go
package main
import "testing"

func TestAdd(t *testing.T){
	got := Add(4, 4)
	want:= 8

	if got != want {
		t.Errorf("got %q. wanted %q", got, want)
	}
}


func TestSubtract(t *testing.T){
	got := Subtract(6, 4)
	want:= 2

	if got != want {
		t.Errorf("got %q. wanted %q", got, want)
	}
}

To run the test:

> go mod init calculator
> go test

# Result
> go test         
PASS
ok      calculator      0.127s

We can test for failure as well by changing the want variable to a random integer/string

> go test
--- FAIL: TestAdd (0.00s)
    calculator_test.go:9: got '\b'. wanted '\x05'
--- FAIL: TestSubtract (0.00s)
    calculator_test.go:19: got '\x02'. wanted '\x03'
FAIL
exit status 1
FAIL    calculator      0.215s

Change back the values and push the code to your repository

Last updated