test_output.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. from sympy.core.singleton import S
  2. from sympy.physics.vector import Vector, ReferenceFrame, Dyadic
  3. from sympy.testing.pytest import raises
  4. Vector.simp = True
  5. A = ReferenceFrame('A')
  6. def test_output_type():
  7. A = ReferenceFrame('A')
  8. v = A.x + A.y
  9. d = v | v
  10. zerov = Vector(0)
  11. zerod = Dyadic(0)
  12. # dot products
  13. assert isinstance(d & d, Dyadic)
  14. assert isinstance(d & zerod, Dyadic)
  15. assert isinstance(zerod & d, Dyadic)
  16. assert isinstance(d & v, Vector)
  17. assert isinstance(v & d, Vector)
  18. assert isinstance(d & zerov, Vector)
  19. assert isinstance(zerov & d, Vector)
  20. raises(TypeError, lambda: d & S.Zero)
  21. raises(TypeError, lambda: S.Zero & d)
  22. raises(TypeError, lambda: d & 0)
  23. raises(TypeError, lambda: 0 & d)
  24. assert not isinstance(v & v, (Vector, Dyadic))
  25. assert not isinstance(v & zerov, (Vector, Dyadic))
  26. assert not isinstance(zerov & v, (Vector, Dyadic))
  27. raises(TypeError, lambda: v & S.Zero)
  28. raises(TypeError, lambda: S.Zero & v)
  29. raises(TypeError, lambda: v & 0)
  30. raises(TypeError, lambda: 0 & v)
  31. # cross products
  32. raises(TypeError, lambda: d ^ d)
  33. raises(TypeError, lambda: d ^ zerod)
  34. raises(TypeError, lambda: zerod ^ d)
  35. assert isinstance(d ^ v, Dyadic)
  36. assert isinstance(v ^ d, Dyadic)
  37. assert isinstance(d ^ zerov, Dyadic)
  38. assert isinstance(zerov ^ d, Dyadic)
  39. assert isinstance(zerov ^ d, Dyadic)
  40. raises(TypeError, lambda: d ^ S.Zero)
  41. raises(TypeError, lambda: S.Zero ^ d)
  42. raises(TypeError, lambda: d ^ 0)
  43. raises(TypeError, lambda: 0 ^ d)
  44. assert isinstance(v ^ v, Vector)
  45. assert isinstance(v ^ zerov, Vector)
  46. assert isinstance(zerov ^ v, Vector)
  47. raises(TypeError, lambda: v ^ S.Zero)
  48. raises(TypeError, lambda: S.Zero ^ v)
  49. raises(TypeError, lambda: v ^ 0)
  50. raises(TypeError, lambda: 0 ^ v)
  51. # outer products
  52. raises(TypeError, lambda: d | d)
  53. raises(TypeError, lambda: d | zerod)
  54. raises(TypeError, lambda: zerod | d)
  55. raises(TypeError, lambda: d | v)
  56. raises(TypeError, lambda: v | d)
  57. raises(TypeError, lambda: d | zerov)
  58. raises(TypeError, lambda: zerov | d)
  59. raises(TypeError, lambda: zerov | d)
  60. raises(TypeError, lambda: d | S.Zero)
  61. raises(TypeError, lambda: S.Zero | d)
  62. raises(TypeError, lambda: d | 0)
  63. raises(TypeError, lambda: 0 | d)
  64. assert isinstance(v | v, Dyadic)
  65. assert isinstance(v | zerov, Dyadic)
  66. assert isinstance(zerov | v, Dyadic)
  67. raises(TypeError, lambda: v | S.Zero)
  68. raises(TypeError, lambda: S.Zero | v)
  69. raises(TypeError, lambda: v | 0)
  70. raises(TypeError, lambda: 0 | v)