From 108ab9821ad713dde90f8e4ff0fdf4755e75a751 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Legat?= Date: Thu, 11 Sep 2025 15:51:15 +0200 Subject: [PATCH] Implement equality between ExponentsIterator --- src/comparison.jl | 7 +++++++ test/comparison.jl | 9 +++++++++ 2 files changed, 16 insertions(+) diff --git a/src/comparison.jl b/src/comparison.jl index 8d1eba87..d7af6103 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 Base.length(it::ExponentsIterator{M,Int}) where {M} if it.maxdegree < it.mindegree return 0 diff --git a/test/comparison.jl b/test/comparison.jl index bab42246..dd6acb21 100644 --- a/test/comparison.jl +++ b/test/comparison.jl @@ -16,6 +16,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.",