Skip to content

Commit 33327c5

Browse files
HyeockJinKimncw
authored andcommitted
Implement eq, ne for slice
Fixes #98
1 parent 1dceaf8 commit 33327c5

File tree

3 files changed

+46
-0
lines changed

3 files changed

+46
-0
lines changed

py/bool.go

+10
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,16 @@ func (a Bool) M__ne__(other Object) (Object, error) {
9393
return True, nil
9494
}
9595

96+
func notEq(eq Object, err error) (Object, error) {
97+
if err != nil {
98+
return nil, err
99+
}
100+
if eq == NotImplemented {
101+
return eq, nil
102+
}
103+
return Not(eq)
104+
}
105+
96106
// Check interface is satisfied
97107
var _ I__bool__ = Bool(false)
98108
var _ I__index__ = Bool(false)

py/slice.go

+25
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,31 @@ func (r *Slice) GetIndices(length int) (start, stop, step, slicelength int, err
151151
return
152152
}
153153

154+
func (a *Slice) M__eq__(other Object) (Object, error) {
155+
b, ok := other.(*Slice)
156+
if !ok {
157+
return NotImplemented, nil
158+
}
159+
160+
if a.Start != b.Start {
161+
return False, nil
162+
}
163+
164+
if a.Stop != b.Stop {
165+
return False, nil
166+
}
167+
168+
if a.Step != b.Step {
169+
return False, nil
170+
}
171+
172+
return True, nil
173+
}
174+
175+
func (a *Slice) M__ne__(other Object) (Object, error) {
176+
return notEq(a.M__eq__(other))
177+
}
178+
154179
func init() {
155180
SliceType.Dict["start"] = &Property{
156181
Fget: func(self Object) (Object, error) {

py/tests/slice.py

+11
Original file line numberDiff line numberDiff line change
@@ -13,4 +13,15 @@
1313
assert a.stop == 10
1414
assert a.step == 1
1515

16+
assert slice(1).__eq__(slice(1))
17+
assert slice(1) != slice(2)
18+
assert slice(1) == slice(None, 1, None)
19+
assert slice(0, 0, 0) == slice(0, 0, 0)
20+
21+
assert slice(0, 0, 1) != slice(0, 0, 0)
22+
assert slice(0, 1, 0) != slice(0, 0, 0)
23+
assert slice(1, 0, 0) != slice(0, 0, 0)
24+
assert slice(0).__ne__(slice(1))
25+
assert slice(0, None, 3).__ne__(slice(0, 0, 3))
26+
1627
doc="finished"

0 commit comments

Comments
 (0)