PR1_Pflicht_3/VectorTest.java

168 lines
4.8 KiB
Java

import org.junit.jupiter.api.Test;
import static org.junit.Assert.assertNull;
import static org.junit.jupiter.api.Assertions.*;
public class VectorTest {
@Test
void testScalarMultiplication() {
int[] vector = {1, 2, 3};
int scalar = 2;
Vector.scalarMultiplication(vector, scalar);
assertArrayEquals(new int[]{2, 4, 6}, vector);
int[] vector1 = {7, 8, 15};
Vector.scalarMultiplication(vector1, -1);
assertArrayEquals(new int[]{-7, -8, -15}, vector1);
}
@Test
void testVectorProduct2D() {
int[] vector1 = {3, 4};
int[] vector2 = {5, 6};
// Für 2D Kreuzprodukt wird der Skalarwert (Z-Komponente des 3D-Kreuzprodukts) verwendet
// 3*6 - 4*5 = 18 - 20 = -2
// Erwartete Ausgabe: -2
System.out.print("Erwartete Ausgabe: -2\nTatsächliche Ausgabe: ");
Vector.vectorProduct(vector1, vector2);
}
@Test
void testVectorProduct3D() {
int[] vector1 = {1, 2, 3};
int[] vector2 = {4, 5, 6};
// Kreuzprodukt:
// x = 2*6 - 3*5 = 12 - 15 = -3
// y = 3*4 - 1*6 = 12 - 6 = 6
// z = 1*5 - 2*4 = 5 - 8 = -3
System.out.print("Erwartete Ausgabe: [-3, 6, -3]\nTatsächliche Ausgabe: ");
Vector.vectorProduct(vector1, vector2);
}
@Test
void testVectorLength() {
int[] vector = {3, 4};
double length = Vector.vectorLength(vector);
assertEquals(5.0, length, 0.001);
int[] vector3D = {1, 2, 2};
assertEquals(3.0, Vector.vectorLength(vector3D), 0.001);
}
@Test
void testMatrixMultiplicationValidMatrix() {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int scalar = 2;
int[][] expected = {
{2, 4, 6},
{8, 10, 12},
{14, 16, 18}
};
assertArrayEquals(expected, Vector.matrixMultiplication(matrix, scalar));
}
@Test
void testMatrixMultiplicationInvalidMatrix() {
int[][] invalidMatrix = {
{1, 2},
{3, 4}
};
assertNull(Vector.matrixMultiplication(invalidMatrix, 3));
}
@Test
void testScalarMultiplicationVariants() {
int[] v1 = {1, 2, 3};
Vector.scalarMultiplication(v1, 2);
assertArrayEquals(new int[]{2, 4, 6}, v1);
int[] v2 = {7, 8, 15};
Vector.scalarMultiplication(v2, -1);
assertArrayEquals(new int[]{-7, -8, -15}, v2);
int[] v3 = {0, 0, 0};
Vector.scalarMultiplication(v3, 5);
assertArrayEquals(new int[]{0, 0, 0}, v3);
}
@Test
void testVectorProduct2DVariants() {
int ergebnis1 = -2;
System.out.println("Erwartet: " + ergebnis1 );
Vector.vectorProduct(new int[]{3, 4}, new int[]{5, 6});
int ergebnis2 = -1;
System.out.println("Erwartet: " + ergebnis2 );
Vector.vectorProduct(new int[]{0, 1}, new int[]{1, 0});
}
@Test
void testVectorProduct3DVariants() {
int[] ergebnis1 = {-3, 6, -3};
System.out.println("Erwartet: [" + ergebnis1[0]+", " + ergebnis1[1] +", " + ergebnis1[2]+"]");
Vector.vectorProduct(new int[]{1, 2, 3}, new int[]{4, 5, 6});
int[] ergebnis2 = {-1, 0, 0};
System.out.println("Erwartet: [" + ergebnis2[0]+", " + ergebnis2[1] +", " + ergebnis2[2]+"]");
Vector.vectorProduct(new int[]{0, 0, 1}, new int[]{0, 1, 0});
}
@Test
void testVectorProductInvalidDimensions() {
System.out.println("Erwartet: illegale Dimension" );
Vector.vectorProduct(new int[]{1, 0}, new int[]{0, 1, 0});
}
@Test
void testVectorLengthVariants() {
assertEquals(5.0, Vector.vectorLength(new int[]{3, 4}), 0.001);
assertEquals(3.0, Vector.vectorLength(new int[]{1, 2, 2}), 0.001);
assertEquals(0.0, Vector.vectorLength(new int[]{0, 0, 0}), 0.001);
}
@Test
void testMatrixMultiplicationVariants() {
int[][] matrix = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9}
};
int[][] expected = {
{2, 4, 6},
{8, 10, 12},
{14, 16, 18}
};
assertArrayEquals(expected, Vector.matrixMultiplication(matrix, 2));
int[][] zeroMatrix = {
{1, -2, -6},
{-3, 4, 5},
{-70, 12, -8}
};
int[][] expectedZero = {
{0, 0, 0},
{0, 0, 0},
{0, 0, 0}
};
assertArrayEquals(expectedZero, Vector.matrixMultiplication(zeroMatrix, 0));
}
@Test
void testMatrixMultiplicationInvalidCases() {
int[][] nonSquare = {
{1, 2},
{3, 4}
};
assertNull(Vector.matrixMultiplication(nonSquare, 3));
int[][] empty = new int[0][0];
assertNull(Vector.matrixMultiplication(empty, 2));
}
}