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) { t.Parallel() 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 } } func TestAsBoolean(t *testing.T) { t.Parallel() // Boolean true value := forge.NewBoolean(true) val, err := value.AsBoolean() if err != nil { t.Error(err) return } if val != true { t.Error("expected value to be 'true'") return } // Boolean false err = value.UpdateValue(false) if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != false { t.Error("expected value to be 'false'") return } // Int true err = value.UpdateValue(1) if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != true { t.Error("expected value to be 'true'") return } // Int false err = value.UpdateValue(0) if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != false { t.Error("expected value to be 'false'") return } // Float true err = value.UpdateValue(float64(1)) if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != true { t.Error("expected value to be 'true'") return } // Float false err = value.UpdateValue(float64(0)) if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != false { t.Error("expected value to be 'false'") return } // Null true err = value.UpdateValue(nil) if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != false { t.Error("expected value to be 'false'") return } // String true err = value.UpdateValue("anything") if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != true { t.Error("expected value to be 'true'") return } // String false err = value.UpdateValue("") if err != nil { t.Error(err) return } val, err = value.AsBoolean() if err != nil { t.Error(err) return } if val != false { t.Error("expected value to be 'false'") return } }