| @ -0,0 +1,262 @@ | |||
| package forge_test | |||
| import ( | |||
| "testing" | |||
| "github.com/brettlangdon/forge" | |||
| ) | |||
| func TestNewPrimative(t *testing.T) { | |||
| t.Parallel() | |||
| value, err := forge.NewPrimative(true) | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.BOOLEAN { | |||
| t.Error("value is not a BOOLEAN") | |||
| return | |||
| } | |||
| rawVal := value.GetValue() | |||
| switch rawVal.(type) { | |||
| case bool: | |||
| // this is what we want to happen | |||
| default: | |||
| t.Error("expected value.GetValue() to be a bool") | |||
| return | |||
| } | |||
| if rawVal.(bool) != true { | |||
| t.Error("expected value.GetValue() to be equal to 'true'") | |||
| } | |||
| } | |||
| func TestNewBoolean(t *testing.T) { | |||
| t.Parallel() | |||
| value := forge.NewBoolean(true) | |||
| if value.GetType() != forge.BOOLEAN { | |||
| t.Error("value is not a BOOLEAN") | |||
| return | |||
| } | |||
| rawVal := value.GetValue() | |||
| switch rawVal.(type) { | |||
| case bool: | |||
| // this is what we want to happen | |||
| default: | |||
| t.Error("expected value.GetValue() to be a bool") | |||
| return | |||
| } | |||
| if rawVal.(bool) != true { | |||
| t.Error("expected value.GetValue() to be equal to 'true'") | |||
| } | |||
| } | |||
| func TestNewFloat(t *testing.T) { | |||
| t.Parallel() | |||
| value := forge.NewFloat(50.5) | |||
| if value.GetType() != forge.FLOAT { | |||
| t.Error("value is not a FLOAT") | |||
| return | |||
| } | |||
| rawVal := value.GetValue() | |||
| switch rawVal.(type) { | |||
| case float64: | |||
| // this is what we want to happen | |||
| default: | |||
| t.Error("expected value.GetValue() to be a float64") | |||
| return | |||
| } | |||
| if rawVal.(float64) != 50.5 { | |||
| t.Error("expected value.GetValue() to be equal to '50.5'") | |||
| } | |||
| } | |||
| func TestNewInteger(t *testing.T) { | |||
| t.Parallel() | |||
| value := forge.NewInteger(50) | |||
| if value.GetType() != forge.INTEGER { | |||
| t.Error("value is not a INTEGER") | |||
| return | |||
| } | |||
| rawVal := value.GetValue() | |||
| switch rawVal.(type) { | |||
| case int64: | |||
| // this is what we want to happen | |||
| default: | |||
| t.Error("expected value.GetValue() to be a int64") | |||
| return | |||
| } | |||
| if rawVal.(int64) != 50 { | |||
| t.Error("expected value.GetValue() to be equal to '50'") | |||
| } | |||
| } | |||
| func TestNewNull(t *testing.T) { | |||
| t.Parallel() | |||
| value := forge.NewNull() | |||
| if value.GetType() != forge.NULL { | |||
| t.Error("value is not a NULL") | |||
| return | |||
| } | |||
| rawVal := value.GetValue() | |||
| switch rawVal.(type) { | |||
| case nil: | |||
| // this is what we want to happen | |||
| default: | |||
| t.Error("expected value.GetValue() to be a nil") | |||
| return | |||
| } | |||
| if rawVal != nil { | |||
| t.Error("expected value.GetValue() to be equal to 'nil'") | |||
| } | |||
| } | |||
| func TestNewString(t *testing.T) { | |||
| t.Parallel() | |||
| value := forge.NewString("hello") | |||
| if value.GetType() != forge.STRING { | |||
| t.Error("value is not a STRING") | |||
| return | |||
| } | |||
| rawVal := value.GetValue() | |||
| switch rawVal.(type) { | |||
| case string: | |||
| // this is what we want to happen | |||
| default: | |||
| t.Error("expected value.GetValue() to be a string") | |||
| return | |||
| } | |||
| if rawVal.(string) != "hello" { | |||
| t.Error("expected value.GetValue() to be equal to '\"hello\"'") | |||
| } | |||
| } | |||
| func TestUpdateValue(t *testing.T) { | |||
| t.Parallel() | |||
| value := forge.NewNull() | |||
| // Boolean | |||
| err := value.UpdateValue(true) | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.BOOLEAN { | |||
| t.Error("value is not a BOOLEAN") | |||
| return | |||
| } | |||
| if value.GetValue().(bool) != true { | |||
| t.Error("expected value.GetValue() to be equal to 'true'") | |||
| } | |||
| // Float | |||
| err = value.UpdateValue(50.5) | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.FLOAT { | |||
| t.Error("value is not a FLOAT") | |||
| return | |||
| } | |||
| if value.GetValue().(float64) != 50.5 { | |||
| t.Error("expected value.GetValue() to be equal to '50.5'") | |||
| } | |||
| // Integer int | |||
| err = value.UpdateValue(50) | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.INTEGER { | |||
| t.Error("value is not a INTEGER") | |||
| return | |||
| } | |||
| if value.GetValue().(int64) != 50 { | |||
| t.Error("expected value.GetValue() to be equal to '50'") | |||
| } | |||
| // Integer int64 | |||
| err = value.UpdateValue(int64(50)) | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.INTEGER { | |||
| t.Error("value is not a INTEGER") | |||
| return | |||
| } | |||
| if value.GetValue().(int64) != 50 { | |||
| t.Error("expected value.GetValue() to be equal to '50'") | |||
| } | |||
| // Null | |||
| err = value.UpdateValue(nil) | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.NULL { | |||
| t.Error("value is not a NULL") | |||
| return | |||
| } | |||
| if value.GetValue() != nil { | |||
| t.Error("expected value.GetValue() to be equal to '50'") | |||
| } | |||
| // String | |||
| err = value.UpdateValue("hello") | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| if value.GetType() != forge.STRING { | |||
| t.Error("value is not a STRING") | |||
| return | |||
| } | |||
| if value.GetValue().(string) != "hello" { | |||
| t.Error("expected value.GetValue() to be equal to '\"hello\"'") | |||
| return | |||
| } | |||
| } | |||
| func TestUpdateValueUnknown(t *testing.T) { | |||
| value, err := forge.NewPrimative("hello") | |||
| if err != nil { | |||
| t.Error(err) | |||
| return | |||
| } | |||
| newVal := []string{"hello", "world"} | |||
| err = value.UpdateValue(newVal) | |||
| if err == nil { | |||
| t.Error("expected an error, got none") | |||
| return | |||
| } | |||
| } | |||