spec/csolve_spec.rb in congruence_solver-0.3.0 vs spec/csolve_spec.rb in congruence_solver-0.3.1
- old
+ new
@@ -1,89 +1,89 @@
require "polynomial_interpreter"
RSpec.describe PolynomialInterpreter do
- describe "::read_congruence" do
- context "when input contains no '\='" do
- it "raises an ArgumentError" do
- not_congruence = "x^2 (mod 5)"
- expect {PolynomialInterpreter.read_congruence not_congruence}.to raise_error ArgumentError, "congruence invalid"
- end
- end
+ describe "::read_congruence" do
+ context "when input contains no '\='" do
+ it "raises an ArgumentError" do
+ not_congruence = "x^2 (mod 5)"
+ expect {PolynomialInterpreter.read_congruence not_congruence}.to raise_error ArgumentError, "congruence invalid"
+ end
+ end
- context "when input contains no mod" do
- it "raises an ArgumentError" do
- not_congruence = "x^2 = 3"
- expect {PolynomialInterpreter.read_congruence not_congruence}.to raise_error ArgumentError, "congruence invalid"
- end
- end
+ context "when input contains no mod" do
+ it "raises an ArgumentError" do
+ not_congruence = "x^2 = 3"
+ expect {PolynomialInterpreter.read_congruence not_congruence}.to raise_error ArgumentError, "congruence invalid"
+ end
+ end
- context "when input contains an invalid mod" do
- it "raises an ArgumentError" do
- not_congruence = "x = 5 (mod)"
- expect {PolynomialInterpreter.read_congruence not_congruence}.to raise_error ArgumentError, "congruence invalid"
- end
- end
+ context "when input contains an invalid mod" do
+ it "raises an ArgumentError" do
+ not_congruence = "x = 5 (mod)"
+ expect {PolynomialInterpreter.read_congruence not_congruence}.to raise_error ArgumentError, "congruence invalid"
+ end
+ end
- context "when lhs is empty" do
- it "raises an ArgumentError" do
- congruence = "= 3 (mod 4)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
- end
- end
+ context "when lhs is empty" do
+ it "raises an ArgumentError" do
+ congruence = "= 3 (mod 4)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
+ end
+ end
- context "when lhs contains invalid characters" do
- it "raises an ArgumentError" do
- congruence = "x! = 3 (mod 5)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
- end
- end
+ context "when lhs contains invalid characters" do
+ it "raises an ArgumentError" do
+ congruence = "x! = 3 (mod 5)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
+ end
+ end
- context "when lhs contains more than one distinct variables" do
- it "raises an ArgumentError" do
- congruence = "x^2 + y = 0 (mod 6)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
- end
- end
+ context "when lhs contains more than one distinct variables" do
+ it "raises an ArgumentError" do
+ congruence = "x^2 + y = 0 (mod 6)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
+ end
+ end
- context "when lhs contains negative power" do
- it "raises an ArgumentError" do
- congruence = "x^-1 = 2 (mod 35)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
- end
- end
+ context "when lhs contains negative power" do
+ it "raises an ArgumentError" do
+ congruence = "x^-1 = 2 (mod 35)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "lhs polynomial invalid"
+ end
+ end
- context "when rhs is empty" do
- it "raises an ArgumentError" do
- congruence = "x^3 = (mod 4)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
- end
- end
+ context "when rhs is empty" do
+ it "raises an ArgumentError" do
+ congruence = "x^3 = (mod 4)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
+ end
+ end
- context "when rhs contains invalid characters" do
- it "raises an ArgumentError" do
- congruence = "3 = x! (mod 5)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
- end
- end
+ context "when rhs contains invalid characters" do
+ it "raises an ArgumentError" do
+ congruence = "3 = x! (mod 5)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
+ end
+ end
- context "when rhs contains more than one distinct variables" do
- it "raises an ArgumentError" do
- congruence = "0 = x^2 + y (mod 6)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
- end
- end
+ context "when rhs contains more than one distinct variables" do
+ it "raises an ArgumentError" do
+ congruence = "0 = x^2 + y (mod 6)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
+ end
+ end
- context "when rhs contains negative power" do
- it "raises an ArgumentError" do
- congruence = "2 = x^-1 (mod 35)"
- expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
- end
- end
+ context "when rhs contains negative power" do
+ it "raises an ArgumentError" do
+ congruence = "2 = x^-1 (mod 35)"
+ expect {PolynomialInterpreter.read_congruence congruence}.to raise_error ArgumentError, "rhs polynomial invalid"
+ end
+ end
- context "when input is a valid polynomial congruence" do
- it "formats congruence as a single polynomial congruent to 0" do
- congruence = "45x^5 + 5 + 3x ^6 + 5x^2 + x + 3x^5=x^9 + 9 x (mod 16)"
- expect( PolynomialInterpreter.read_congruence(congruence)).to eq [[-1, 0, 0, 3, 48, 0, 0, 5, -8, 5].reverse, 16]
- end
- end
- end
+ context "when input is a valid polynomial congruence" do
+ it "formats congruence as a single polynomial congruent to 0" do
+ congruence = "45x^5 + 5 + 3x ^6 + 5x^2 + x + 3x^5=x^9 + 9 x (mod 16)"
+ expect( PolynomialInterpreter.read_congruence(congruence)).to eq [[-1, 0, 0, 3, 48, 0, 0, 5, -8, 5].reverse, 16]
+ end
+ end
+ end
end
\ No newline at end of file