mirror of https://github.com/periph/devices
Merge 89a9731dff into 1752d1b57a
commit
5be4808b39
@ -0,0 +1,48 @@
|
||||
// Copyright 2019 The Periph Authors. All rights reserved.
|
||||
// Use of this source code is governed under the Apache License, Version 2.0
|
||||
// that can be found in the LICENSE file.
|
||||
|
||||
package inky
|
||||
|
||||
import (
|
||||
"image/color"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestDevImpression_BlendPrecision(t *testing.T) {
|
||||
// Saturation level that triggers truncation if not handled correctly.
|
||||
// For example, if rs=10.9 and rd=5.9:
|
||||
// Old: uint8(10.9) + uint8(5.9) = 10 + 5 = 15
|
||||
// New: uint8(10.9 + 5.9) = uint8(16.8) = 16
|
||||
|
||||
// We need to simulate this with real palette values and saturation.
|
||||
// Let's use a simplified case.
|
||||
// satPalette[0].R = 109, dscPalette[0].R = 59, saturation = 10%
|
||||
// rs = 109 * 0.1 = 10.9
|
||||
// rd = 59 * 0.9 = 53.1
|
||||
// Old: 10 + 53 = 63
|
||||
// New: uint8(10.9 + 53.1) = uint8(64.0) = 64
|
||||
|
||||
d := &DevImpression{
|
||||
saturation: 10,
|
||||
}
|
||||
d.Dev.model = IMPRESSION73 // This uses sc7 and dsc
|
||||
|
||||
// Override sc7 and dsc for the test up to at least common length
|
||||
oldSc7 := sc7
|
||||
oldDsc := dsc
|
||||
defer func() {
|
||||
sc7 = oldSc7
|
||||
dsc = oldDsc
|
||||
}()
|
||||
|
||||
sc7 = []color.NRGBA{{R: 109, G: 0, B: 0, A: 255}}
|
||||
dsc = []color.NRGBA{{R: 59, G: 0, B: 0, A: 255}}
|
||||
|
||||
p := d.blend()
|
||||
c := p[0].(color.RGBA)
|
||||
|
||||
if c.R != 64 {
|
||||
t.Errorf("Expected R=64, got %d. Precision loss detected!", c.R)
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue