github.com/amimof/huego@v1.2.1/light_test.go (about) 1 package huego 2 3 import ( 4 "image/color" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestGetLights(t *testing.T) { 11 b := New(hostname, username) 12 lights, err := b.GetLights() 13 if err != nil { 14 t.Fatal(err) 15 } 16 t.Logf("Found %d lights", len(lights)) 17 for _, l := range lights { 18 t.Logf("ID: %d", l.ID) 19 t.Logf(" Type: %s", l.Type) 20 t.Logf(" Name: %s", l.Name) 21 t.Logf(" ModelID: %s", l.ModelID) 22 t.Logf(" ManufacturerName: %s", l.ManufacturerName) 23 t.Logf(" UniqueID: %s", l.UniqueID) 24 t.Logf(" SwVersion: %s", l.SwVersion) 25 t.Logf(" SwConfigID: %s", l.SwConfigID) 26 t.Logf(" ProductName: %s", l.ProductName) 27 } 28 contains := func(name string, ss []Light) bool { 29 for _, s := range ss { 30 if s.Name == name { 31 return true 32 } 33 } 34 return false 35 } 36 37 assert.True(t, contains("Huecolorlamp7", lights)) 38 assert.True(t, contains("Huelightstripplus1", lights)) 39 40 b.Host = badHostname 41 _, err = b.GetLights() 42 assert.NotNil(t, err) 43 } 44 45 func TestGetLight(t *testing.T) { 46 b := New(hostname, username) 47 l, err := b.GetLight(1) 48 if err != nil { 49 t.Fatal(err) 50 } else { 51 t.Logf("ID: %d", l.ID) 52 t.Logf("Type: %s", l.Type) 53 t.Logf("Name: %s", l.Name) 54 t.Logf("ModelID: %s", l.ModelID) 55 t.Logf("ManufacturerName: %s", l.ManufacturerName) 56 t.Logf("UniqueID: %s", l.UniqueID) 57 t.Logf("SwVersion: %s", l.SwVersion) 58 t.Logf("SwConfigID: %s", l.SwConfigID) 59 t.Logf("ProductName: %s", l.ProductName) 60 t.Logf("State:") 61 t.Logf(" On: %t", l.State.On) 62 t.Logf(" Bri: %d", l.State.Bri) 63 t.Logf(" Hue: %d", l.State.Hue) 64 t.Logf(" Sat: %d", l.State.Sat) 65 t.Logf(" Xy: %b", l.State.Xy) 66 t.Logf(" Ct: %d", l.State.Ct) 67 t.Logf(" Alert: %s", l.State.Alert) 68 t.Logf(" Effect: %s", l.State.Effect) 69 t.Logf(" TransitionTime: %d", l.State.TransitionTime) 70 t.Logf(" BriInc: %d", l.State.BriInc) 71 t.Logf(" SatInc: %d", l.State.SatInc) 72 t.Logf(" HueInc: %d", l.State.HueInc) 73 t.Logf(" CtInc: %d", l.State.CtInc) 74 t.Logf(" XyInc: %d", l.State.XyInc) 75 t.Logf(" ColorMode: %s", l.State.ColorMode) 76 t.Logf(" Reachable: %t", l.State.Reachable) 77 } 78 79 b.Host = badHostname 80 _, err = b.GetLight(1) 81 assert.NotNil(t, err) 82 83 } 84 85 func TestIdentifyLight(t *testing.T) { 86 b := New(hostname, username) 87 id := 2 88 resp, err := b.IdentifyLight(id) 89 if err != nil { 90 t.Fatal(err) 91 } else { 92 t.Logf("Light %d identified", id) 93 for k, v := range resp.Success { 94 t.Logf("%v: %s", k, v) 95 } 96 } 97 98 b.Host = badHostname 99 _, err = b.IdentifyLight(id) 100 assert.NotNil(t, err) 101 } 102 103 func TestSetLight(t *testing.T) { 104 b := New(hostname, username) 105 id := 1 106 state := State{ 107 On: true, 108 Bri: 254, 109 } 110 resp, err := b.SetLightState(id, state) 111 if err != nil { 112 t.Fatal(err) 113 } else { 114 t.Logf("Light %d state updated", id) 115 for k, v := range resp.Success { 116 t.Logf("%v: %s", k, v) 117 } 118 } 119 120 b.Host = badHostname 121 _, err = b.SetLightState(id, state) 122 assert.NotNil(t, err) 123 } 124 125 func TestFindLights(t *testing.T) { 126 b := New(hostname, username) 127 resp, err := b.FindLights() 128 if err != nil { 129 t.Fatal(err) 130 } else { 131 for k, v := range resp.Success { 132 t.Logf("%v: %s", k, v) 133 } 134 } 135 136 b.Host = badHostname 137 _, err = b.FindLights() 138 assert.NotNil(t, err) 139 } 140 141 func TestUpdateLight(t *testing.T) { 142 b := New(hostname, username) 143 id := 1 144 light := Light{ 145 Name: "New Light", 146 } 147 resp, err := b.UpdateLight(id, light) 148 if err != nil { 149 t.Fatal(err) 150 } else { 151 t.Logf("Light %d updated", id) 152 for k, v := range resp.Success { 153 t.Logf("%v: %s", k, v) 154 } 155 } 156 b.Host = badHostname 157 _, err = b.UpdateLight(id, light) 158 assert.NotNil(t, err) 159 } 160 161 func TestTurnOffLight(t *testing.T) { 162 b := New(hostname, username) 163 id := 1 164 light, err := b.GetLight(id) 165 if err != nil { 166 t.Fatal(err) 167 } 168 err = light.Off() 169 if err != nil { 170 t.Fatal(err) 171 } 172 assert.False(t, light.IsOn()) 173 t.Logf("Turned off light with id %d", light.ID) 174 175 b.Host = badHostname 176 err = light.Off() 177 assert.NotNil(t, err) 178 } 179 180 func TestTurnOnLight(t *testing.T) { 181 b := New(hostname, username) 182 id := 1 183 light, err := b.GetLight(id) 184 if err != nil { 185 t.Fatal(err) 186 } 187 err = light.On() 188 if err != nil { 189 t.Fatal(err) 190 } 191 assert.True(t, light.IsOn()) 192 t.Logf("Turned on light with id %d", light.ID) 193 194 b.Host = badHostname 195 err = light.On() 196 assert.NotNil(t, err) 197 } 198 199 func TestIfLightIsOn(t *testing.T) { 200 b := New(hostname, username) 201 id := 1 202 light, err := b.GetLight(id) 203 if err != nil { 204 t.Fatal(err) 205 } 206 t.Logf("Is light %d on?: %t", light.ID, light.IsOn()) 207 } 208 209 func TestRenameLight(t *testing.T) { 210 b := New(hostname, username) 211 id := 1 212 light, err := b.GetLight(id) 213 if err != nil { 214 t.Fatal(err) 215 } 216 name := "Color Lamp 1" 217 err = light.Rename(name) 218 if err != nil { 219 t.Fatal(err) 220 } 221 t.Logf("Renamed light to '%s'", light.Name) 222 223 b.Host = badHostname 224 err = light.Rename(name) 225 assert.NotNil(t, err) 226 } 227 228 func TestSetLightBri(t *testing.T) { 229 b := New(hostname, username) 230 id := 1 231 light, err := b.GetLight(id) 232 if err != nil { 233 t.Fatal(err) 234 } 235 err = light.Bri(254) 236 if err != nil { 237 t.Fatal(err) 238 } 239 assert.True(t, light.IsOn()) 240 t.Logf("Brightness of light %d set to %d", light.ID, light.State.Bri) 241 242 b.Host = badHostname 243 err = light.Bri(254) 244 assert.NotNil(t, err) 245 } 246 247 func TestSetLightHue(t *testing.T) { 248 b := New(hostname, username) 249 id := 1 250 light, err := b.GetLight(id) 251 if err != nil { 252 t.Fatal(err) 253 } 254 err = light.Hue(65535) 255 if err != nil { 256 t.Fatal(err) 257 } 258 assert.True(t, light.IsOn()) 259 t.Logf("Hue of light %d set to %d", light.ID, light.State.Hue) 260 261 b.Host = badHostname 262 err = light.Hue(65535) 263 assert.NotNil(t, err) 264 } 265 266 func TestSetLightSat(t *testing.T) { 267 b := New(hostname, username) 268 id := 1 269 light, err := b.GetLight(id) 270 if err != nil { 271 t.Fatal(err) 272 } 273 err = light.Sat(254) 274 if err != nil { 275 t.Fatal(err) 276 } 277 assert.True(t, light.IsOn()) 278 t.Logf("Sat of light %d set to %d", light.ID, light.State.Sat) 279 280 b.Host = badHostname 281 err = light.Sat(254) 282 assert.NotNil(t, err) 283 } 284 285 func TestSetLightXy(t *testing.T) { 286 b := New(hostname, username) 287 id := 1 288 light, err := b.GetLight(id) 289 if err != nil { 290 t.Fatal(err) 291 } 292 xy := []float32{0.1, 0.5} 293 err = light.Xy(xy) 294 if err != nil { 295 t.Fatal(err) 296 } 297 assert.True(t, light.IsOn()) 298 t.Logf("Xy of light %d set to %+v", light.ID, light.State.Xy) 299 300 b.Host = badHostname 301 err = light.Xy(xy) 302 assert.NotNil(t, err) 303 } 304 305 func TestSetLightCt(t *testing.T) { 306 b := New(hostname, username) 307 id := 1 308 light, err := b.GetLight(id) 309 if err != nil { 310 t.Fatal(err) 311 } 312 err = light.Ct(16) 313 if err != nil { 314 t.Fatal(err) 315 } 316 assert.True(t, light.IsOn()) 317 t.Logf("Ct of light %d set to %d", light.ID, light.State.Ct) 318 319 b.Host = badHostname 320 err = light.Ct(16) 321 assert.NotNil(t, err) 322 } 323 324 func TestSetLightColor(t *testing.T) { 325 b := New(hostname, username) 326 id := 1 327 light, err := b.GetLight(id) 328 if err != nil { 329 t.Fatal(err) 330 } 331 color := color.RGBA{R: 0xff, G: 0x00, B: 0x00, A: 0xFF} 332 err = light.Col(color) 333 if err != nil { 334 t.Fatal(err) 335 } 336 assert.True(t, light.IsOn()) 337 t.Logf("Col of light %d set to xy: %+v", light.ID, light.State.Xy) 338 339 b.Host = badHostname 340 err = light.Col(color) 341 assert.NotNil(t, err) 342 } 343 344 func TestSetLightTransitionTime(t *testing.T) { 345 b := New(hostname, username) 346 id := 1 347 light, err := b.GetLight(id) 348 if err != nil { 349 t.Fatal(err) 350 } 351 err = light.TransitionTime(10) 352 if err != nil { 353 t.Fatal(err) 354 } 355 t.Logf("TransitionTime of light %d set to %d", light.ID, light.State.TransitionTime) 356 357 b.Host = badHostname 358 err = light.TransitionTime(10) 359 assert.NotNil(t, err) 360 } 361 362 func TestSetLightEffect(t *testing.T) { 363 b := New(hostname, username) 364 id := 1 365 light, err := b.GetLight(id) 366 if err != nil { 367 t.Fatal(err) 368 } 369 err = light.Effect("colorloop") 370 if err != nil { 371 t.Fatal(err) 372 } 373 assert.True(t, light.IsOn()) 374 t.Logf("Effect of light %d set to %s", light.ID, light.State.Effect) 375 376 b.Host = badHostname 377 err = light.Effect("colorloop") 378 assert.NotNil(t, err) 379 } 380 381 func TestSetLightAlert(t *testing.T) { 382 b := New(hostname, username) 383 id := 1 384 light, err := b.GetLight(id) 385 if err != nil { 386 t.Fatal(err) 387 } 388 err = light.Alert("lselect") 389 if err != nil { 390 t.Fatal(err) 391 } 392 assert.True(t, light.IsOn()) 393 t.Logf("Alert of light %d set to %s", light.ID, light.State.Alert) 394 395 b.Host = badHostname 396 err = light.Alert("lselect") 397 assert.NotNil(t, err) 398 } 399 400 func TestSetStateLight(t *testing.T) { 401 b := New(hostname, username) 402 id := 1 403 light, err := b.GetLight(id) 404 if err != nil { 405 t.Fatal(err) 406 } 407 state := State{ 408 On: true, 409 Bri: 254, 410 } 411 err = light.SetState(state) 412 if err != nil { 413 t.Fatal(err) 414 } 415 t.Logf("State set successfully on light %d", id) 416 417 b.Host = badHostname 418 err = light.SetState(state) 419 assert.NotNil(t, err) 420 } 421 422 func TestConvertRGBToXY(t *testing.T) { 423 color := color.RGBA{R: 0xff, G: 0x00, B: 0x00, A: 0xFF} 424 xy, brightness := ConvertRGBToXy(color) 425 426 assert.Greater(t, xy[0], float32(0)) 427 assert.Greater(t, xy[1], float32(0)) 428 assert.Greater(t, brightness, uint8(0)) 429 430 t.Logf("Xy of light %+v set to xy: %+v, bright: %d ", color, xy, brightness) 431 }