diff --git a/src/comparison.jl b/src/comparison.jl index 504d6da7..aa6092f8 100644 --- a/src/comparison.jl +++ b/src/comparison.jl @@ -481,6 +481,13 @@ function Base.IteratorSize(::Type{<:ExponentsIterator{M,Int}}) where {M} return Base.HasLength() end +function Base.:(==)(a::ExponentsIterator, b::ExponentsIterator) + return typeof(a.object) == typeof(b.object) && + length(a.object) == length(b.object) && + a.mindegree == b.mindegree && + a.maxdegree == b.maxdegree +end + function _length(it::ExponentsIterator, maxdegree) if maxdegree < it.mindegree return 0 diff --git a/test/comparison.jl b/test/comparison.jl index 1df0520e..401f7146 100644 --- a/test/comparison.jl +++ b/test/comparison.jl @@ -17,6 +17,15 @@ function _test(nvars::Int, M; kws...) return end +function test_equal() + exp = ExponentsIterator{LexOrder}([0]) + @test exp == ExponentsIterator{LexOrder}([0]) + @test exp != ExponentsIterator{LexOrder}((0,)) + @test exp != ExponentsIterator{LexOrder}([0, 0]) + @test exp != ExponentsIterator{LexOrder}([0], mindegree = 1) + @test exp != ExponentsIterator{LexOrder}([0], maxdegree = 2) +end + function test_errors() err = ArgumentError( "The `mindegree` of `ExponentsIterator` cannot be negative.",