TEST(Polinom, can_delete) { Polinom a; a.AddElement(monom(2, 100)); Polinom b; b.AddElement(monom(0, 100)); b = a; EXPECT_EQ(2, b[0].GetCoefficient()); }
TEST(Polinom, can_add_two_monoms) { Polinom a; a.AddElement(monom(2, 1)); a.AddElement(monom(5, 10)); EXPECT_EQ(5, a[0].GetCoefficient()); EXPECT_EQ(2, a[1].GetCoefficient()); }
TEST(TableSort, can_insert_polinom) { SortTable t; Polinom p; p.AddMonom(Monom(3, 125)); t.Insert("a", &p); EXPECT_EQ(3, t.GetNode("a")->operator[](0).GetCoef()); }
TEST(Polinom, can_copy) { Polinom a; a.AddElement(monom(2,1)); Polinom b(a); EXPECT_EQ(a[0].GetCoefficient(),b[0].GetCoefficient()); EXPECT_EQ(a.GetLength(), b.GetLength()); }
TEST(Polinoms, can_add_polinoms_with_equal_Degree) { Polinom p1,p2; p1.AddMonom(3,123); p2.AddMonom(2,123); Polinom res; res.AddMonom(5,123); EXPECT_EQ(res,p1+p2); }
TEST(Polinoms, can_substract_polinoms_with_equal_Degree) { Polinom p1, p2; p1.AddMonom(3, 123); p2.AddMonom(2, 123); Polinom res; res.AddMonom(1, 123); EXPECT_EQ(res, p1 - p2); }
TEST(Polinoms, can_clean_polinom) { Polinom p; p.AddMonom(1,111); p.AddMonom(2,222); p.AddMonom(3,333); p.Clean(); EXPECT_EQ(true,p.GetHead()==NULL); }
TEST(Polinom, can_multiply_polinom_double) { Polinom a; a.AddElement(monom(0.5, 100)); Polinom c = a * a; EXPECT_EQ(1, c.GetLength()); EXPECT_EQ(0.25, c[0].GetCoefficient()); EXPECT_EQ(200, c[0].GetDegree()); }
TEST(Polinom, can_add_polinoms_whithout_fhead) { Polinom a; a.AddElement(monom(1, 100)); a.AddElement(monom(2, 200)); Polinom b; a = a + b; EXPECT_EQ(2, a.GetLength()); }
TEST(Polinom, can_not_multiply_polinom_whith_large_monom) { Polinom a; a.AddElement(monom(1, 100)); a.AddElement(monom(2, 200)); monom b(3, 900); Polinom c; // 6|300,3|200 EXPECT_ANY_THROW(c = a * b); }
TEST(Polinoms, output) { Polinom p; p.AddMonom(3,100); stringstream s; s << p; string str; getline(s, str); EXPECT_EQ(string("3x\0"), str); }
TEST(Polinom, can_minus_whith_empty) { Polinom a; a.AddElement(monom(2, 100)); a.AddElement(monom(2, 200)); Polinom b; Polinom c = a - b; EXPECT_EQ(2, c.GetLength()); EXPECT_EQ(2, c[0].GetCoefficient()); EXPECT_EQ(2, c[1].GetCoefficient()); }
TEST(Polinom, can_simplify_whith_null) { Polinom a; a.AddElement(monom(10, 100)); a.AddElement(monom(0, 200)); //10|300 a.Simplify(); EXPECT_EQ(1, a.GetLength()); EXPECT_EQ(10, a[0].GetCoefficient()); }
TEST(Polinom, can_add_double) { Polinom a; a.AddElement(monom(0.5, 100)); Polinom b; b.AddElement(monom(0.5, 100)); a = a + b; EXPECT_EQ(1, a.GetLength()); EXPECT_EQ(1, a[0].GetCoefficient()); }
TEST(Polinom, can_simplify) { Polinom a; a.AddElement(monom(3, 100)); a.AddElement(monom(5, 200)); a.AddElement(monom(1, 200)); // 1|200,5|200,3|100 a.Simplify(); EXPECT_EQ(2,a.GetLength()); EXPECT_EQ(6, a[0].GetCoefficient()); EXPECT_EQ(3, a[1].GetCoefficient()); }
//------------------------------------------------------------------------------ //основная функция int main() { float start=clock(); //начало работы программы Polinom polinom; polinom.Testing(); //"тестирование" "max_power" и "exact" polinom.BasicFunction(); //printf("%f", polinom.pow(2,3)); float end=clock(); //завершение работы программы //время работы программы float time_work=((float)(end-start))/CLOCKS_PER_SEC; printf("\n\nThe time of program work: %0.3f sec (%0.5f min)", time_work, time_work/60); printf("\nOpen \"output.txt\""); getch(); return 0; }
TEST(Polinom, can_multiply_polinom_monom) { Polinom a; a.AddElement(monom(1, 100)); a.AddElement(monom(2, 200)); monom b(3,100); Polinom c; // 6|300,3|200 c = a * b; EXPECT_EQ(2, c.GetLength()); EXPECT_EQ(6, c[0].GetCoefficient()); EXPECT_EQ(3, c[1].GetCoefficient()); EXPECT_EQ(300, c[0].GetDegree()); EXPECT_EQ(200, c[1].GetDegree()); }
TEST(Polinom, can_multiply_polinom_const) { Polinom a; a.AddElement(monom(1, 100)); a.AddElement(monom(2, 200)); monom b(2, 000); //константа => моном вида (const, 000) Polinom c; c = a * b; EXPECT_EQ(2, c.GetLength()); EXPECT_EQ(4, c[0].GetCoefficient()); EXPECT_EQ(2, c[1].GetCoefficient()); EXPECT_EQ(200, c[0].GetDegree()); EXPECT_EQ(100, c[1].GetDegree()); }
TEST(Polinom, can_multiply_polinom_whith_polinom) { Polinom a; a.AddElement(monom(1, 100)); a.AddElement(monom(1, 10)); Polinom c = a * a; EXPECT_EQ(3, c.GetLength()); EXPECT_EQ(1, c[0].GetCoefficient()); EXPECT_EQ(200, c[0].GetDegree()); EXPECT_EQ(2, c[1].GetCoefficient()); EXPECT_EQ(110, c[1].GetDegree()); EXPECT_EQ(1, c[2].GetCoefficient()); EXPECT_EQ(20, c[2].GetDegree()); }
TEST(Polinom, can_add_null_2) { Polinom a; a.AddElement(monom(2, 100)); Polinom b; b.AddElement(monom(0, 110)); Polinom c; c = a + b; EXPECT_EQ(1, c.GetLength()); EXPECT_EQ(2, c[0].GetCoefficient()); }
TEST(Polinom, can_minus_null_2) { Polinom a; a.AddElement(monom(2, 100)); a.AddElement(monom(3, 200)); Polinom b; b.AddElement(monom(0, 110)); Polinom c; c = a - b; EXPECT_EQ(2, c.GetLength()); EXPECT_EQ(3, c[0].GetCoefficient()); EXPECT_EQ(2, c[1].GetCoefficient()); }
TEST(Polinom, can_minus) { Polinom a; a.AddElement(monom(2, 100)); a.AddElement(monom(2, 200)); Polinom b; b.AddElement(monom(1, 100)); b.AddElement(monom(4, 200)); Polinom c; c = a - b; EXPECT_EQ(2, c.GetLength()); EXPECT_EQ(-2, c[0].GetCoefficient()); EXPECT_EQ(1, c[1].GetCoefficient()); }
TEST(Polinom, can_add) { Polinom a; a.AddElement(monom(1, 100)); a.AddElement(monom(2, 200)); Polinom b; b.AddElement(monom(1, 100)); b.AddElement(monom(3, 300)); Polinom c; c = a + b; EXPECT_EQ(3, c.GetLength()); EXPECT_EQ(3, c[0].GetCoefficient()); EXPECT_EQ(2, c[1].GetCoefficient()); EXPECT_EQ(2, c[2].GetCoefficient()); }
TEST(Polinom, can_simplify_2) { Polinom a; a.AddElement(monom(3, 100)); a.AddElement(monom(5, 200)); a.AddElement(monom(1, 200)); a.AddElement(monom(2, 200)); std::cout << a[0].GetCoefficient() << std::endl; std::cout << a[1].GetCoefficient() << std::endl; std::cout << a[2].GetCoefficient() << std::endl; std::cout << a[3].GetCoefficient() << std::endl; //2|200,1|200,5|200,3|100 a.Simplify(); EXPECT_EQ(2, a.GetLength()); EXPECT_EQ(8, a[0].GetCoefficient()); EXPECT_EQ(3, a[1].GetCoefficient()); }
TEST(Polinom, can_simplify_3) { Polinom a; a.AddElement(monom(10, 100)); a.AddElement(monom(5, 200)); a.AddElement(monom(1, 200)); a.AddElement(monom(4, 300)); a.AddElement(monom(1, 300)); std::cout << a[0].GetCoefficient() << std::endl; std::cout << a[1].GetCoefficient() << std::endl; std::cout << a[2].GetCoefficient() << std::endl; std::cout << a[3].GetCoefficient() << std::endl; std::cout << a[4].GetCoefficient() << std::endl; //1|300,4|300,1|200,5|200,10|100 a.Simplify(); EXPECT_EQ(3, a.GetLength()); EXPECT_EQ(5, a[0].GetCoefficient()); EXPECT_EQ(6, a[1].GetCoefficient()); EXPECT_EQ(10, a[2].GetCoefficient()); }
TEST(Polinoms, compare_polinom_with_itself_return_true) { Polinom p; p.AddMonom(3,111); EXPECT_EQ(true,p==p); }
TEST(Polinoms, can_assign_polinom_to_itself) { Polinom p; p.AddMonom(3,111); ASSERT_NO_THROW(p = p); }