Browse Source

Added some testing using Go’s features
My first attempt to use <go’d ‘testing’ feature

Gwyneth Llewelyn 2 years ago
parent
commit
e1f201480f
3 changed files with 31 additions and 22 deletions
  1. 2 2
      go.mod
  2. 4 4
      go.sum
  3. 25 16
      tests/minimalist_test.go

+ 2 - 2
go.mod

@@ -45,8 +45,8 @@ require (
 	github.com/tidwall/rtred v0.1.2 // indirect
 	github.com/tidwall/tinyqueue v0.1.1 // indirect
 	go.opencensus.io v0.23.0 // indirect
-	golang.org/x/net v0.0.0-20211029224645-99673261e6eb // indirect
-	golang.org/x/sys v0.0.0-20211031064116-611d5d643895 // indirect
+	golang.org/x/net v0.0.0-20211101193420-4a448f8816b3 // indirect
+	golang.org/x/sys v0.0.0-20211101204403-39c9dd37992c // indirect
 	golang.org/x/text v0.3.7 // indirect
 	google.golang.org/protobuf v1.27.1 // indirect
 	gopkg.in/ini.v1 v1.63.2 // indirect

+ 4 - 4
go.sum

@@ -443,8 +443,8 @@ golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v
 golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc=
 golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
 golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
-golang.org/x/net v0.0.0-20211029224645-99673261e6eb h1:pirldcYWx7rx7kE5r+9WsOXPXK0+WH5+uZ7uPmJ44uM=
-golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
+golang.org/x/net v0.0.0-20211101193420-4a448f8816b3 h1:VrJZAjbekhoRn7n5FBujY31gboH+iB3pdLxn3gE9FjU=
+golang.org/x/net v0.0.0-20211101193420-4a448f8816b3/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
 golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
 golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
 golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
@@ -530,8 +530,8 @@ golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBc
 golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
-golang.org/x/sys v0.0.0-20211031064116-611d5d643895 h1:iaNpwpnrgL5jzWS0vCNnfa8HqzxveCFpFx3uC/X4Tps=
-golang.org/x/sys v0.0.0-20211031064116-611d5d643895/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20211101204403-39c9dd37992c h1:rnNohYBMnXA07uGnZ9CSWNhIu4Gob4FqWS43lLqZ2sU=
+golang.org/x/sys v0.0.0-20211101204403-39c9dd37992c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
 golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
 golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
 golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=

+ 25 - 16
tests/minimalist-test.go → tests/minimalist_test.go

@@ -1,64 +1,73 @@
 // Minimalist test to confirm that basic functionality works.
-// This can be safely ignored.
 package main
 
 import (
-	"fmt"
-	"log"
+	"os"
+	"testing"
 
 	badger "github.com/dgraph-io/badger/v3"
 )
 
-func main() {
+func TestMinimalistSLKVDB(t *testing.T) {
 	// Open the Badger database located in the /tmp/badger directory.
 	// It will be created if it doesn't exist.
 	// db, err := badger.Open(badger.DefaultOptions("/tmp/badger"))
+	t.Log("Testing basic Badger functionality with a simple database read")
 	db, err := badger.Open(badger.DefaultOptions("slkvdb/gosl-database.db"))
 	if err != nil {
-		log.Fatal(err)
+		t.Fatal(err)
 	}
-	defer db.Close()
+	defer func() {
+		db.Close()	// First close database,
+		// then remove all the directories and files
+		// Using RemoveAll() function
+		if err = os.RemoveAll("slkvdb"); err != nil {
+			t.Fatal(err)
+		} else {
+			t.Log("cleaning up test database successful")
+		}
+	}()
 
 	err = db.Update(func(txn *badger.Txn) error {
 		err = txn.Set([]byte("answer"), []byte("42"))
 		return err
 	})
-	handle(err)
+	handle(t, err)
 
 	err = db.View(func(txn *badger.Txn) error {
 		item, err := txn.Get([]byte("answer"))
-		handle(err)
+		handle(t, err)
 
 		var valCopy []byte
 		err = item.Value(func(val []byte) error {
 			// This func with val would only be called if item.Value encounters no error.
 
 			// Accessing val here is valid.
-			fmt.Printf("(Inside item.Value()) The answer is: %s\n", val)
+			t.Logf("(Inside item.Value()) The answer is: %q\n", val)
 
 			// Copying or parsing val is valid.
 			valCopy = append([]byte{}, val...)
 
 			return nil
 		})
-		handle(err)
+		handle(t, err)
 
 		// You must copy it to use it outside item.Value(...).
-		fmt.Printf("(inside db.View()) The answer is: %s\n", valCopy)
+		t.Logf("(inside db.View()) The answer is: %q\n", valCopy)
 
 		// Alternatively, you could also use item.ValueCopy().
 		valCopy, err = item.ValueCopy(nil)
-		handle(err)
-		fmt.Printf("(inside db.View() using ValueCopy) The answer is: %s\n", valCopy)
+		handle(t, err)
+		t.Logf("(inside db.View() using ValueCopy) The answer is: %s\n", valCopy)
 
 		return nil
 	})
-	handle(err)
+	handle(t, err)
 }
 
 // Handles errors for this very simple test.
-func handle(err error) {
+func handle(t *testing.T, err error) {
 	if err != nil {
-		fmt.Printf("error was: %q\n", err)
+		t.Logf("error was: %q\n", err)
 	}
 }