Skip to content

Commit 5b62880

Browse files
authored
Merge pull request #275 from checkr/zz/fix-float-equal
Fix float comparison
2 parents acf2fe2 + e01a5e0 commit 5b62880

File tree

6 files changed

+72
-8
lines changed

6 files changed

+72
-8
lines changed

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ require (
7171
github.com/tinylib/msgp v1.1.0 // indirect
7272
github.com/urfave/negroni v0.3.0
7373
github.com/yadvendar/negroni-newrelic-go-agent v0.0.0-20160803090806-3dc58758cb67
74-
github.com/zhouzhuojie/conditions v0.0.0-20190213052452-7de314ba1d59
74+
github.com/zhouzhuojie/conditions v0.0.0-20190705160302-784df330cb87
7575
github.com/zhouzhuojie/withtimeout v0.0.0-20190405051827-12b39eb2edd5
7676
golang.org/x/net v0.0.0-20190313220215-9f648a60d977
7777
golang.org/x/sys v0.0.0-20190312061237-fead79001313 // indirect

go.sum

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,8 +215,8 @@ github.com/tinylib/msgp v1.1.0 h1:9fQd+ICuRIu/ue4vxJZu6/LzxN0HwMds2nq/0cFvxHU=
215215
github.com/tinylib/msgp v1.1.0/go.mod h1:+d+yLhGm8mzTaHzB+wgMYrodPfmZrzkirds8fDWklFE=
216216
github.com/urfave/negroni v0.3.0/go.mod h1:Meg73S6kFm/4PpbYdq35yYWoCZ9mS/YSx+lKnmiohz4=
217217
github.com/yadvendar/negroni-newrelic-go-agent v0.0.0-20160803090806-3dc58758cb67/go.mod h1:eRmB4tpcIoEUfMNyiXTbnZtzfODhBhZB3BIWGDD+vLs=
218-
github.com/zhouzhuojie/conditions v0.0.0-20190213052452-7de314ba1d59 h1:T+NwShgssYUhadQdSZrmDBhpl462zdAq1Na6/jJ/OI8=
219-
github.com/zhouzhuojie/conditions v0.0.0-20190213052452-7de314ba1d59/go.mod h1:Izhy98HD3MkfwGPz+p9ZV2JuqrpbHjaQbUq9iZHh+ZY=
218+
github.com/zhouzhuojie/conditions v0.0.0-20190705160302-784df330cb87 h1:5pQTfWe/n9OvmwOamjhkePoT3dtJv0If1CXl3zkhSZg=
219+
github.com/zhouzhuojie/conditions v0.0.0-20190705160302-784df330cb87/go.mod h1:Izhy98HD3MkfwGPz+p9ZV2JuqrpbHjaQbUq9iZHh+ZY=
220220
github.com/zhouzhuojie/withtimeout v0.0.0-20190405051827-12b39eb2edd5 h1:YuR5otuPvpk6EPrKy9rVXiQKTqgY6OEqSlzko9kcfCI=
221221
github.com/zhouzhuojie/withtimeout v0.0.0-20190405051827-12b39eb2edd5/go.mod h1:nhm/3zpPm56iKoXLEeeevuI5V9qEtNhuhLbPZwcrgcs=
222222
go.opencensus.io v0.20.1 h1:pMEjRZ1M4ebWGikflH7nQpV6+Zr88KBMA2XJD3sbijw=

pkg/handler/eval_test.go

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,60 @@ func TestEvalSegment(t *testing.T) {
8585
assert.NotEmpty(t, log)
8686
assert.True(t, evalNextSegment)
8787
})
88+
89+
t.Run("test float comparison - 9990403>=9990404 evals to be false", func(t *testing.T) {
90+
s := entity.GenFixtureSegment()
91+
s.RolloutPercent = uint(100)
92+
s.Constraints = []entity.Constraint{
93+
{
94+
Model: gorm.Model{ID: 500},
95+
SegmentID: 200,
96+
Property: "foo",
97+
Operator: models.ConstraintOperatorGTE,
98+
Value: `9990404`,
99+
},
100+
}
101+
s.PrepareEvaluation()
102+
103+
vID, log, evalNextSegment := evalSegment(100, models.EvalContext{
104+
EnableDebug: true,
105+
EntityContext: map[string]interface{}{"foo": float64(9990403)},
106+
EntityID: "entityID1",
107+
EntityType: "entityType1",
108+
FlagID: int64(100),
109+
}, s)
110+
111+
assert.Nil(t, vID)
112+
assert.NotZero(t, log)
113+
assert.True(t, evalNextSegment)
114+
})
115+
116+
t.Run("test float comparison - 9990404>=9990403 evals to be true", func(t *testing.T) {
117+
s := entity.GenFixtureSegment()
118+
s.RolloutPercent = uint(100)
119+
s.Constraints = []entity.Constraint{
120+
{
121+
Model: gorm.Model{ID: 500},
122+
SegmentID: 200,
123+
Property: "foo",
124+
Operator: models.ConstraintOperatorGTE,
125+
Value: `9990403`,
126+
},
127+
}
128+
s.PrepareEvaluation()
129+
130+
vID, log, evalNextSegment := evalSegment(100, models.EvalContext{
131+
EnableDebug: true,
132+
EntityContext: map[string]interface{}{"foo": float64(9990404)},
133+
EntityID: "entityID1",
134+
EntityType: "entityType1",
135+
FlagID: int64(100),
136+
}, s)
137+
138+
assert.NotZero(t, vID)
139+
assert.NotZero(t, log)
140+
assert.False(t, evalNextSegment)
141+
})
88142
}
89143

90144
func TestEvalFlag(t *testing.T) {

vendor/github.com/zhouzhuojie/conditions/Gopkg.lock

Lines changed: 7 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/github.com/zhouzhuojie/conditions/evaluator.go

Lines changed: 7 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vendor/modules.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -224,7 +224,7 @@ github.com/tinylib/msgp/msgp
224224
github.com/urfave/negroni
225225
# github.com/yadvendar/negroni-newrelic-go-agent v0.0.0-20160803090806-3dc58758cb67
226226
github.com/yadvendar/negroni-newrelic-go-agent
227-
# github.com/zhouzhuojie/conditions v0.0.0-20190213052452-7de314ba1d59
227+
# github.com/zhouzhuojie/conditions v0.0.0-20190705160302-784df330cb87
228228
github.com/zhouzhuojie/conditions
229229
# github.com/zhouzhuojie/withtimeout v0.0.0-20190405051827-12b39eb2edd5
230230
github.com/zhouzhuojie/withtimeout

0 commit comments

Comments
 (0)