// 3rd_party_lib:matrix4cj/target/matrix4cj
// 3rd_party_lib_ohos:matrix4cj/target/aarch64-linux-ohos/matrix4cj
package matrix4cj.tests.HLT.LEVEL1
import matrix4cj.*
import std.math.*
import std.unittest.*
import std.unittest.testmacro.*
@Test
public class TestMatrix4 {
@TestCase
func L0_Test_Matrix_identity_01(): Unit {
var rows = 4
var cols = 3
var matrix01 = Matrix.Identity(rows, cols)
@Assert(matrix01.rowNum,rows)
@Assert(matrix01.colNum,cols)
for (i in 0..rows) {
for (j in 0..cols) {
if (i == j) {
@Assert(matrix01.get(i,j),1.0)
} else {
@Assert(matrix01.get(i,j),0.0)
}
}
}
}
@TestCase
func L0_Test_Matrix_identity_02(): Unit {
var rows = 3
var cols = 8
var matrix01 = Matrix.Identity(rows, cols)
@Assert(matrix01.rowNum,rows)
@Assert(matrix01.colNum,cols)
for (i in 0..rows) {
for (j in 0..cols) {
if (i == j) {
@Assert(matrix01.get(i,j),1.0)
} else {
@Assert(matrix01.get(i,j),0.0)
}
}
}
}
@TestCase
func L0_Test_Matrix_identity_03(): Unit {
var rows = 0
var cols = 0
try {
var matrix01 = Matrix.Identity(rows, cols)
@Assert(false)
} catch (e: IllegalArgumentException) {
if (e.toString().contains("Matrix dimensions must be greater than zero.")) {
@Assert(true)
} else {
@Assert(false)
}
}
}
@TestCase
func L0_Test_Matrix_inverse_01(): Unit {
var matrix01 = Matrix(
[
[1.80, 2.88, 2.05, -0.89],
[5.25, -2.95, -0.95, -3.80],
[1.58, -2.69, -2.90, -1.04],
[-1.11, -0.66, -0.59, 0.80]
]
)
var re_Inv = matrix01.inverse()
var result = matrix01 * re_Inv
var expected_result = Matrix(
[
[1.0, 0.0, 0.0, 0.0],
[0.0, 1.0, 0.0, 0.0],
[0.0, 0.0, 1.0, 0.0],
[0.0, 0.0, 0.0, 1.0]
]
)
@Assert(result.rowNum,expected_result.rowNum)
@Assert(result.colNum,expected_result.colNum)
var rows = result.rowNum
var cols = result.colNum
for (i in 0..rows) {
for (j in 0..cols) {
@Assert(abs(expected_result.get(i,j)-result.get(i,j))<1e-6,true)
}
}
}
@TestCase
func L0_Test_Matrix_minus_01(): Unit {
var matrix01 = Matrix(
[
[1.80, 2.88, 2.05, -0.89],
[5.25, -2.95, -0.95, -3.80],
[1.58, -2.69, -2.90, -1.04],
[-1.11, -0.66, -0.59, 0.80]
]
)
var matrix02 = Matrix(
[
[1.80, 2.88, 2.05, -0.89],
[5.25, -2.95, -0.95, -3.80],
[1.58, -2.69, -2.90, -1.04],
[-1.11, -0.66, -0.59, 0.80]
]
)
var result = matrix01 - (matrix02)
var expected_matrix = Matrix(
[
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0]
]
)
@Assert(result.rowNum,expected_matrix.rowNum)
@Assert(result.colNum,expected_matrix.colNum)
var rows = result.rowNum
var cols = result.colNum
for (i in 0..rows) {
for (j in 0..cols) {
@Assert(abs(expected_matrix.get(i,j)-result.get(i,j))<1e-6,true)
@Assert(abs(expected_matrix.get(i,j)-matrix01.get(i,j))<1e-6,false)
}
}
}
@TestCase
func L0_Test_Matrix_minusEquals_01(): Unit {
var matrix01 = Matrix(
[
[1.80, 2.88, 2.05, -0.89],
[5.25, -2.95, -0.95, -3.80],
[1.58, -2.69, -2.90, -1.04],
[-1.11, -0.66, -0.59, 0.80]
]
)
var matrix02 = Matrix(
[
[1.80, 2.88, 2.05, -0.89],
[5.25, -2.95, -0.95, -3.80],
[1.58, -2.69, -2.90, -1.04],
[-1.11, -0.66, -0.59, 0.80]
]
)
matrix01 -= (matrix02)
var result = matrix01
var expected_matrix = Matrix(
[
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0],
[0.0, 0.0, 0.0, 0.0]
]
)
@Assert(result.rowNum,expected_matrix.rowNum)
@Assert(result.colNum,expected_matrix.colNum)
var rows = result.rowNum
var cols = result.colNum
for (i in 0..rows) {
for (j in 0..cols) {
@Assert(abs(expected_matrix.get(i,j)-result.get(i,j))<1e-6,true)
@Assert(abs(expected_matrix.get(i,j)-matrix01.get(i,j))<1e-6,true)
}
}
}
}