import scas.base.{, ModInteger}
import scas.module.{Array, ArrayModule}
import scas.structure.Product
import .given

val r = Product(3, 5)
import r.given

assert (13 + 13 >< 21)
assert (13 \ BigInteger("2") >< 14)
assert (13 \ 2 >< 14)
assert (r.toString == 35.toString)
assert (r.characteristic.intValue == 15)

val s = ArrayModule(35)(2)
val e = s.generators
import s.given

assert (Array(13, 13) >< 13 *%e(0) + 13 *%e(1))
assert (13 *%e(0) >< e(0)%* 13)
assert ((13 *%e(0) + 13 *%e(1)).toList == 1313.toList)
assert (s == 352)