github.com/viant/toolbox@v0.34.5/value_provider_test.go (about) 1 package toolbox_test 2 3 import ( 4 "testing" 5 "time" 6 7 "github.com/stretchr/testify/assert" 8 "github.com/viant/toolbox" 9 ) 10 11 func TestNewEnvValueProvider(t *testing.T) { 12 provider := toolbox.NewEnvValueProvider() 13 { 14 _, err := provider.Get(nil, "USER") 15 assert.Nil(t, err) 16 } 17 { 18 _, err := provider.Get(nil, "_blahblah") 19 assert.NotNil(t, err) 20 } 21 22 } 23 24 func TestNewCastedValueProvider(t *testing.T) { 25 provider := toolbox.NewCastedValueProvider() 26 27 for _, source := range []interface{}{2, "2"} { 28 value, err := provider.Get(nil, "int", source) 29 assert.Nil(t, err) 30 assert.Equal(t, 2, value) 31 } 32 33 { 34 _, err := provider.Get(nil, "int") 35 assert.NotNil(t, err, "Invalid number of parameters") 36 } 37 38 for _, source := range []interface{}{2, "2", 2.0} { 39 value, err := provider.Get(nil, "float", source) 40 assert.Nil(t, err) 41 assert.Equal(t, 2.0, value) 42 } 43 44 for _, source := range []interface{}{true, "true", 1} { 45 value, err := provider.Get(nil, "bool", source) 46 assert.Nil(t, err) 47 assert.Equal(t, true, value) 48 } 49 for _, source := range []interface{}{1, "1"} { 50 value, err := provider.Get(nil, "string", source) 51 assert.Nil(t, err) 52 assert.Equal(t, "1", value) 53 } 54 55 { 56 value, err := provider.Get(nil, "time", "2016-02-22 12:32:01 UTC", toolbox.DateFormatToLayout("yyyy-MM-dd hh:mm:ss z")) 57 assert.Nil(t, err) 58 timeValue := value.(time.Time) 59 assert.Equal(t, int64(1456144321), timeValue.Unix()) 60 } 61 62 { 63 _, err := provider.Get(nil, "time", "2016/02-22 12:32:01 UTC", toolbox.DateFormatToLayout("yyyy-MM-dd hh:mm:ss")) 64 assert.NotNil(t, err, "invalid format") 65 } 66 67 { 68 _, err := provider.Get(nil, "time", "2016-02-22 12:32:01 UTC", toolbox.DateFormatToLayout("yyyy-MM-dd hh:mm:ss z"), "1") 69 assert.NotNil(t, err, "to many parameters") 70 } 71 72 { 73 _, err := provider.Get(nil, "ABC", "1") 74 assert.NotNil(t, err, "NOT IMPLEMENTED") 75 } 76 } 77 78 func TestNewWeekdayProvider(t *testing.T) { 79 provider := toolbox.NewWeekdayProvider() 80 value, err := provider.Get(toolbox.NewContext(), nil) 81 assert.Nil(t, err) 82 assert.NotNil(t, value) 83 assert.Equal(t, toolbox.AsInt(value), int(time.Now().Weekday())) 84 } 85 86 func TestNewCurrentTimeProvider(t *testing.T) { 87 provider := toolbox.NewCurrentTimeProvider() 88 value, err := provider.Get(nil) 89 assert.Nil(t, err) 90 assert.NotNil(t, value) 91 } 92 93 func TestNewCurrentDateProvider(t *testing.T) { 94 provider := toolbox.NewCurrentDateProvider() 95 value, err := provider.Get(nil) 96 assert.Nil(t, err) 97 assert.NotNil(t, value) 98 } 99 100 func TestNewNilProvider(t *testing.T) { 101 provider := toolbox.NewNilValueProvider() 102 value, err := provider.Get(nil) 103 assert.Nil(t, err) 104 assert.Nil(t, value) 105 } 106 107 func TestNewValueProviderRegistry(t *testing.T) { 108 registry := toolbox.NewValueProviderRegistry() 109 assert.False(t, registry.Contains("a")) 110 registry.Register("a", toolbox.NewNilValueProvider()) 111 assert.True(t, registry.Contains("a")) 112 provider := registry.Get("a") 113 assert.NotNil(t, provider) 114 assert.Equal(t, 1, len(registry.Names())) 115 } 116 117 func TestNewDictionaryProviderRegistry(t *testing.T) { 118 119 var dictionary toolbox.MapDictionary = make(map[string]interface{}) 120 var key toolbox.MapDictionary 121 122 dictionary["k1"] = "123" 123 dictionary["k2"] = "xyz" 124 125 provider := toolbox.NewDictionaryProvider(&key) 126 context := toolbox.NewContext() 127 context.Put(&key, &dictionary) 128 129 { 130 value, err := provider.Get(context, "k1") 131 assert.Nil(t, err) 132 assert.Equal(t, "123", value) 133 134 } 135 { 136 value, err := provider.Get(context, "k2") 137 assert.Nil(t, err) 138 assert.Equal(t, "xyz", value) 139 140 } 141 142 { 143 value, err := provider.Get(context, "k13", "true") 144 assert.NotNil(t, err) 145 assert.Nil(t, value) 146 147 } 148 149 } 150 151 func Test_NewNewTimeProvider(t *testing.T) { 152 153 var now = time.Now() 154 provider := toolbox.NewTimeDiffProvider() 155 156 { 157 result, err := provider.Get(nil, "now", 1, "day") 158 assert.Nil(t, err) 159 160 var timeResult = toolbox.AsTime(result, "") 161 in23Hours := now.Add(23 * time.Hour) 162 in25Hours := now.Add(25 * time.Hour) 163 assert.True(t, timeResult.After(in23Hours)) 164 assert.True(t, timeResult.Before(in25Hours)) 165 } 166 167 { 168 result, err := provider.Get(nil, "now", 1, "hour", "timestamp") 169 assert.Nil(t, err) 170 171 var timeResult = toolbox.AsInt(result) 172 in59Mins := int(now.Add(59*time.Minute).Unix() * 1000) 173 in61Mins := int(now.Add(61*time.Minute).Unix() * 1000) 174 assert.True(t, in59Mins < timeResult) 175 assert.True(t, timeResult < in61Mins) 176 } 177 178 { 179 result, err := provider.Get(nil, "now", 1, "week", "unix") 180 assert.Nil(t, err) 181 182 var timeResult = toolbox.AsInt(result) 183 in6Days := int(now.Add(6 * 24 * time.Hour).Unix()) 184 in8Days := int(now.Add(8 * 24 * time.Hour).Unix()) 185 assert.True(t, in6Days < timeResult) 186 assert.True(t, timeResult < in8Days) 187 } 188 { 189 result, err := provider.Get(nil, "now", 1, "hour", "h") 190 assert.Nil(t, err) 191 assert.Equal(t, time.Now().Hour()%12+1, toolbox.AsInt(result)) 192 } 193 } 194 195 func Test_NewDateOfBirthValueProvider(t *testing.T) { 196 //provider := toolbox.NewDateOfBirthrovider() 197 198 //{ 199 // result, err := provider.Get(toolbox.NewContext(), 3, 6, 3) 200 // assert.Nil(t, err) 201 // assert.EqualValues(t, "2016-06-03", toolbox.AsString(result)) 202 //} 203 // 204 //{ 205 // result, err := provider.Get(toolbox.NewContext(), 3, 6, 3, "yyyy-MM-dd") 206 // assert.Nil(t, err) 207 // assert.EqualValues(t, "2016-06-03", toolbox.AsString(result)) 208 //} 209 // 210 //{ 211 // result, err := provider.Get(toolbox.NewContext(), 3, 6, 3, "yyyy") 212 // assert.Nil(t, err) 213 // assert.EqualValues(t, "2016", toolbox.AsString(result)) 214 //} 215 // 216 //{ 217 // result, err := provider.Get(toolbox.NewContext(), 3, 9, 2, "yyyy-MM") 218 // assert.Nil(t, err) 219 // assert.EqualValues(t, "2016-09", toolbox.AsString(result)) 220 //} 221 // 222 //{ 223 // result, err := provider.Get(toolbox.NewContext(), 5, 12, 25, "-MM-dd") 224 // assert.Nil(t, err) 225 // assert.EqualValues(t, "-12-25", toolbox.AsString(result)) 226 //} 227 // 228 //{ 229 // _, err := provider.Get(toolbox.NewContext()) 230 // assert.NotNil(t, err) 231 // 232 //} 233 234 }