28 lines
755 B
Go
28 lines
755 B
Go
package oracle
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
func TestValidateMajority(t *testing.T) {
|
|
now := time.Now()
|
|
d1 := &OracleData{Key: "USD-BRL", Value: 5.00, Time: now}
|
|
d2 := &OracleData{Key: "USD-BRL", Value: 5.01, Time: now.Add(-1 * time.Minute)}
|
|
d3 := &OracleData{Key: "USD-BRL", Value: 4.99, Time: now.Add(-2 * time.Minute)}
|
|
|
|
res, err := ValidateMajority([]*OracleData{d1, d2, d3}, 0.05)
|
|
if err != nil {
|
|
t.Fatalf("Falha ao validar maioria: %v", err)
|
|
}
|
|
if res == nil || res.Value == 0 {
|
|
t.Error("Valor inválido retornado pelo consenso")
|
|
}
|
|
|
|
// sem consenso
|
|
d4 := &OracleData{Key: "USD-BRL", Value: 3.0, Time: now}
|
|
_, err = ValidateMajority([]*OracleData{d1, d4}, 0.001)
|
|
if err == nil {
|
|
t.Error("Esperado erro por falta de consenso")
|
|
}
|
|
} |