diff --git a/testing/src/test/java/org/oppia/android/testing/math/PolynomialSubjectTest.kt b/testing/src/test/java/org/oppia/android/testing/math/PolynomialSubjectTest.kt index d550bd6e90d..a27a77984a6 100644 --- a/testing/src/test/java/org/oppia/android/testing/math/PolynomialSubjectTest.kt +++ b/testing/src/test/java/org/oppia/android/testing/math/PolynomialSubjectTest.kt @@ -11,6 +11,25 @@ import org.oppia.android.app.model.Real @RunWith(JUnit4::class) class PolynomialSubjectTest { + // Helper function to create a polynomial term + fun createTerm(coefficient: Int, vararg variables: Pair): Polynomial.Term { + return Polynomial.Term.newBuilder() + .setCoefficient(Real.newBuilder().setInteger(coefficient)) + .apply { + variables.forEach { (name, power) -> + addVariable(Polynomial.Term.Variable.newBuilder().setName(name).setPower(power)) + } + } + .build() + } + + // Helper function to create a polynomial from multiple terms + fun createPolynomial(vararg terms: Polynomial.Term): Polynomial { + return Polynomial.newBuilder().apply { + terms.forEach { addTerm(it) } + }.build() + } + @Test fun testPolynomialSubject_withNullPolynomial_isNotValidPolynomial() { PolynomialSubject.assertThat(null).isNotValidPolynomial() @@ -18,9 +37,9 @@ class PolynomialSubjectTest { @Test fun testPolynomialSubject_withNonNullPolynomial_isNotValidPolynomial_fails() { - val polynomial = Polynomial.newBuilder() - .addTerm(Polynomial.Term.newBuilder().setCoefficient(Real.newBuilder().setInteger(1))) - .build() + val polynomial = createPolynomial( + createTerm(5, "x" to 1) + ) assertThrows(AssertionError::class.java) { PolynomialSubject.assertThat(polynomial).isNotValidPolynomial() } @@ -28,9 +47,9 @@ class PolynomialSubjectTest { @Test fun testPolynomialSubject_withConstantPolynomial_isConstantThat() { - val constantPolynomial = Polynomial.newBuilder() - .addTerm(Polynomial.Term.newBuilder().setCoefficient(Real.newBuilder().setInteger(5))) - .build() + val constantPolynomial = createPolynomial( + createTerm(5) + ) PolynomialSubject.assertThat(constantPolynomial) .isConstantThat() .isIntegerThat() @@ -38,21 +57,18 @@ class PolynomialSubjectTest { } @Test - fun testPolynomialSubject_withNonConstantPolynomial_isConstantThat_fails() { - val nonConstantPolynomial = Polynomial.newBuilder() - .addTerm( - Polynomial.Term.newBuilder() - .setCoefficient(Real.newBuilder().setInteger(5)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("x").setPower(1)) - ) - .build() + fun testPolynomialSubject_testIsConstantThat_withNonConstantPolynomial_fails() { + val nonConstantPolynomial = createPolynomial( + createTerm(5, "x" to 1) + ) + assertThrows(AssertionError::class.java) { PolynomialSubject.assertThat(nonConstantPolynomial).isConstantThat() } } @Test - fun testPolynomialSubject_withZeroTerms_hasTermCountThat() { + fun testPolynomialSubject_withZeroTerms_hasTermCountThatIsEqualToZero() { val emptyPolynomial = Polynomial.newBuilder().build() PolynomialSubject.assertThat(emptyPolynomial) .hasTermCountThat() @@ -60,36 +76,27 @@ class PolynomialSubjectTest { } @Test - fun testPolynomialSubject_withMultipleTerms_hasTermCountThat() { - val multiTermPolynomial = Polynomial.newBuilder() - .addTerm(Polynomial.Term.newBuilder().setCoefficient(Real.newBuilder().setInteger(1))) - .addTerm(Polynomial.Term.newBuilder().setCoefficient(Real.newBuilder().setInteger(2))) - .build() + fun testPolynomialSubject_withTwoTerms_hasTermCountThatIsEqualToTwo() { + val multiTermPolynomial = createPolynomial( + createTerm(1), + createTerm(2) + ) + PolynomialSubject.assertThat(multiTermPolynomial) .hasTermCountThat() .isEqualTo(2) } @Test - fun testPolynomialSubject_withValidIndex_termHasCoefficient() { - val polynomial = Polynomial.newBuilder() - .addTerm( - Polynomial.Term.newBuilder() - .setCoefficient(Real.newBuilder().setInteger(5)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("x").setPower(2)) - ) - .addTerm( - Polynomial.Term.newBuilder() - .setCoefficient(Real.newBuilder().setInteger(3)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("y").setPower(1)) - ) - .build() + fun testPolynomialSubject_withValidIndex_termHasCoefficientAndvariable() { + val polynomial = createPolynomial( + createTerm(5, "x" to 2), + createTerm(3, "y" to 1) + ) PolynomialSubject.assertThat(polynomial) .term(0) .hasCoefficientThat() - .isIntegerThat() - .isEqualTo(5) PolynomialSubject.assertThat(polynomial) .term(0) @@ -113,56 +120,47 @@ class PolynomialSubjectTest { } @Test - fun testPolynomialSubject_withConstantPolynomial_evaluatesToPlainTextThat() { - val constantPolynomial = Polynomial.newBuilder() - .addTerm(Polynomial.Term.newBuilder().setCoefficient(Real.newBuilder().setInteger(5))) - .build() + fun testPolynomialSubject_withConstantPolynomial_evaluatesToPlainText() { + val constantPolynomial = createPolynomial( + createTerm(5) + ) PolynomialSubject.assertThat(constantPolynomial) .evaluatesToPlainTextThat() .isEqualTo("5") } @Test - fun testPolynomialSubject_withComplexPolynomial_evaluatesToPlainTextThat() { - val polynomial = Polynomial.newBuilder() - .addTerm( - Polynomial.Term.newBuilder() - .setCoefficient(Real.newBuilder().setInteger(2)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("x").setPower(2)) - ) - .addTerm( - Polynomial.Term.newBuilder() - .setCoefficient(Real.newBuilder().setInteger(3)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("x").setPower(1)) - ) - .addTerm(Polynomial.Term.newBuilder().setCoefficient(Real.newBuilder().setInteger(1))) - .build() + fun testPolynomialSubject_withComplexPolynomial_evaluatesToPlainText() { + val polynomial = createPolynomial( + createTerm(2, "x" to 2), + createTerm(3, "x" to 1), + createTerm(1) + ) + PolynomialSubject.assertThat(polynomial) .evaluatesToPlainTextThat() .isEqualTo("2x^2 + 3x + 1") } @Test - fun testPolynomialSubject_withTermHasVariableCount_that() { - val term = Polynomial.Term.newBuilder() - .setCoefficient(Real.newBuilder().setInteger(5)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("x").setPower(2)) - .addVariable(Polynomial.Term.Variable.newBuilder().setName("y").setPower(1)) - .build() + fun testPolynomialSubject_withTwoTerms_hasVariableCountThatIsEqualToTwo() { + val polynomial = createPolynomial( + createTerm(5, "x" to 2, "y" to 1) + ) - PolynomialSubject.assertThat(Polynomial.newBuilder().addTerm(term).build()) + PolynomialSubject.assertThat(polynomial) .term(0) .hasVariableCountThat() .isEqualTo(2) } @Test - fun testPolynomialSubject_withTermVariableHasDetails_that() { - val term = Polynomial.Term.newBuilder() - .addVariable(Polynomial.Term.Variable.newBuilder().setName("x").setPower(3)) - .build() + fun testPolynomialSubject_polynomialTermVariable_hasExpectedDetails() { + val polynomial = createPolynomial( + createTerm(1, "x" to 3) + ) - PolynomialSubject.assertThat(Polynomial.newBuilder().addTerm(term).build()) + PolynomialSubject.assertThat(polynomial) .term(0) .variable(0) .apply {