1)set break resume 2)expose UnittestCount UnittestAux Unittest 3 4testsuite "bugs2014" 5 6testcase "bad exposure of dummy %A into result" 7-- https://groups.google.com/forum/#!topic/fricas-devel/eHZCyaXmJVY 8f:=operator 'f 9y:=operator 'y 10r1:=eval(D(f(x,z),[x,z]),z=y(x)) 11f1:=D(f(x,y(x)),x) 12f2:=D(f1,x) 13f3:=D(f2,x) 14r2:=eval(D(f(x,z),[x,z]),z=y(x)) 15-- wrongly resulted in 16-- f (%A,y(x)) 17-- ,1,2 18-- in revision r1674 19testEquals("r1 - r2", "0") 20testEquals("r1::OutputForm", "r2::OutputForm") 21 22testcase "comutativity of formal diffs" 23f:=operator 'f 24testEquals("D(f(x,z), [x, z]) - D(f(x,z), [z, x])", "0") 25y:=operator 'y 26kxy := eval(D(f(x,z),[x,z]),z=y(x)) 27kyx := eval(D(f(x,z),[z,x]),z=y(x)) 28testEquals("kxy - kyx", "0") 29 30testcase "weighted polynomials" 31wP := OWP(Integer, [x, y, z], [1, 3, 2], 9) 32wx := (x::Polynomial(Integer))::wP 33wy := (y::Polynomial(Integer))::wP 34wz := (z::Polynomial(Integer))::wP 35testEquals("wy^4", "0") 36testEquals("wz^5", "0") 37testEquals("(wy^3 + wy)*wx", "wy*wx") 38 39testcase "complex pattern matching" 40mR := PATRES(Integer, Complex(Integer)) 41pati := convert(%i)@Pattern(Integer) 42testTrue("not(failed?(patternMatch(%i, pati, new()$mR)))") 43testTrue("not(failed?(patternMatch(3 + %i, 3 + pati, new()$mR)))") 44 45mR := PATRES(Integer, Complex(Expression(Integer))) 46testTrue("not(failed?(patternMatch(3 + %i, 3 + pati, new()$mR)))") 47ff : Complex(Expression(Integer)) := exp(x) + %i*x 48patf := convert(ff)@Pattern(Integer) 49testTrue("not(failed?(patternMatch(ff, patf, new()$mR)))") 50 51irule := rule %i == 42 52testEquals("irule(besselJ(v, %i))", "besselJ(v, 42)") 53 54testcase "map with ::Boolean" 55 56gl := [x + y = 1, x - y = 1] 57sol := solve(gl, [x, y]) 58testEquals("[map(g +-> eval(g,s)::Boolean,gl) for s in sol]", 59 "[[true, true]]") 60 61testEquals("[eval(x=1,[x=1]::List EQ FRAC POLY INT)::Boolean for i in 1..1]", 62 "[true]") 63testEquals("[eval(x=1,[x=1])::Boolean for i in 1..1]", "[true]") 64 65q:EQ POLY INT:=(1=1) 66testEquals("[q for i in 1..1]", "[true]") 67 68testcase "assignment to aggregates" 69 70ll := [[1, 2, 3], [4, 5, 6]] 71testTrue("(ll.1.1 := 7; true)") 72testEquals("ll.1.1", "7") 73testTrue("((elt(ll, 2)).1 := 9; true)") 74testEquals("ll.2.1", "9") 75testTrue("(elt(ll.1, 2) := 8; true)") 76testEquals("ll.1.2", "8") 77 78mkr(i) == [i, string(i)]$Record(k : Integer, s : String) 79lr := [mkr(i) for i in 1..3] 80vr := vector(lr) 81 82testTrue("(lr.1.k := 5; true)") 83testEquals("lr.1.k", "5") 84testTrue("((elt(lr, 2)).k := 11; true)") 85testEquals("lr.2.k", "11") 86testTrue("(elt(lr.3, k) := 13; true)") 87testEquals("lr.3.k", "13") 88 89testTrue("(vr.1.k := 15; true)") 90testEquals("vr.1.k", "15") 91testTrue("((elt(vr, 2)).k := 4; true)") 92testEquals("vr.2.k", "4") 93testTrue("(elt(vr.3, k) := 17; true)") 94testEquals("vr.3.k", "17") 95 96testcase "0^0 in CARD" 97testEquals("0::CARD ^ 0::CARD", "1") 98 99testcase "0 to complex power" 100testEquals("complex(0, 0)^complex(2, 0.0)", "0") 101testLibraryError("complex(0, 0)^complex(0.0, 0)") 102 103testcase "dummy vars in CLINDEP" 104xder(xx : Expression(Integer)): Expression(Integer) == D(xx, x) 105Cd := CLINDEP(Integer, Expression(Integer)) 106ff := operator 'f 107testEquals("reducedSystem(matrix([[D(ff(x), x)/(ff(x) + 1)]]), [xder])$Cd", 108 "matrix([[1]])") 109 110testcase "degree in DeRhamComplex" 111Dr := DeRhamComplex(Integer, [x, y, z]) 112dx := generator(1)$Dr 113testEquals("degree(dx)", "1") 114 115testcase "general map for aggregates" 116fAf := FiniteLinearAggregateFunctions2(Integer, List(Integer), 117 Integer, U32Vector) 118testTrue("(uv := map(x +-> x, [1, 2])$fAf; true)") 119testEquals("uv(0)", "1") 120testEquals("uv(1)", "2") 121 122fAf2 := FiniteLinearAggregateFunctions2(Integer, U32Vector, Integer, U32Vector) 123testTrue("(uv2 := map(x +-> x + 7, uv)$fAf2; true)") 124testEquals("uv2(0)", "8") 125testEquals("uv2(1)", "9") 126 127testTrue("(uv := scan((x, y) +-> x*y, [3, 4], 2)$fAf; true)") 128testEquals("uv(0)", "6") 129testEquals("uv(1)", "24") 130testTrue("(uv2 := scan((x, y) +-> x + y, uv, 1)$fAf2; true)") 131testEquals("uv2(0)", "7") 132testEquals("uv2(1)", "31") 133 134testcase "overwritten loop limit" 135g(x1:Integer):Integer == 136 x0:Integer := x1 137 for k0 in 1 .. x0 repeat x0:=x0+1 138 x0 139testEquals("g(3)", "6") 140 141testcase "error in order" 142L := SparseUnivariateLaurentSeries(Fraction Integer, 'z, 0) 143l : L := 0 144-- used to fail 145testEquals("order(l, 0)", "0") 146testEquals("rationalFunction(l, 0)", "0") 147 148testcase "wrong totalDegree" 149testEquals("totalDegree(u*m^2, [m])", "2") 150testEquals("totalDegree(u*m, [v, m])", "1") 151 152)set output algebra on 153statistics() 154