73 lines
2.0 KiB
JavaScript
73 lines
2.0 KiB
JavaScript
|
|
import { CubeModel, FACES, COLORS } from '../src/utils/CubeModel.js';
|
|
|
|
console.log('Running CubeModel Rotation Logic Tests...');
|
|
|
|
const cube1 = new CubeModel();
|
|
const cube2 = new CubeModel();
|
|
|
|
const compareCubes = (c1, c2, message) => {
|
|
const s1 = c1.toString();
|
|
const s2 = c2.toString();
|
|
if (s1 === s2) {
|
|
console.log(`✅ PASS: ${message}`);
|
|
return true;
|
|
} else {
|
|
console.error(`❌ FAIL: ${message}`);
|
|
console.log('Expected (Standard Move):');
|
|
console.log(s2);
|
|
console.log('Actual (Layer Rotation):');
|
|
console.log(s1);
|
|
return false;
|
|
}
|
|
};
|
|
|
|
// Test 1: Top Layer (y=1) CW vs U
|
|
cube1.reset();
|
|
cube2.reset();
|
|
console.log('Testing Top Layer CW vs U...');
|
|
cube1.rotateLayer('y', 1, 1); // Top CW
|
|
cube2.applyMove('U');
|
|
compareCubes(cube1, cube2, "Top Layer CW matches U");
|
|
|
|
// Test 2: Bottom Layer (y=-1) CW vs D
|
|
cube1.reset();
|
|
cube2.reset();
|
|
console.log('Testing Bottom Layer CW vs D...');
|
|
cube1.rotateLayer('y', -1, -1); // Bottom CW (CW around -Y is CCW around Y)
|
|
cube2.applyMove('D');
|
|
compareCubes(cube1, cube2, "Bottom Layer CW matches D");
|
|
|
|
// Test 3: Left Layer (x=-1) CW vs L
|
|
cube1.reset();
|
|
cube2.reset();
|
|
console.log('Testing Left Layer CW vs L...');
|
|
cube1.rotateLayer('x', -1, -1); // Left CW (CW around -X is CCW around X)
|
|
cube2.applyMove('L');
|
|
compareCubes(cube1, cube2, "Left Layer CW matches L");
|
|
|
|
// Test 4: Right Layer (x=1) CW vs R
|
|
cube1.reset();
|
|
cube2.reset();
|
|
console.log('Testing Right Layer CW vs R...');
|
|
cube1.rotateLayer('x', 1, 1); // Right CW
|
|
cube2.applyMove('R');
|
|
compareCubes(cube1, cube2, "Right Layer CW matches R");
|
|
|
|
// Test 5: Front Layer (z=1) CW vs F
|
|
cube1.reset();
|
|
cube2.reset();
|
|
console.log('Testing Front Layer CW vs F...');
|
|
cube1.rotateLayer('z', 1, 1); // Front CW
|
|
cube2.applyMove('F');
|
|
compareCubes(cube1, cube2, "Front Layer CW matches F");
|
|
|
|
// Test 6: Back Layer (z=-1) CW vs B
|
|
cube1.reset();
|
|
cube2.reset();
|
|
console.log('Testing Back Layer CW vs B...');
|
|
cube1.rotateLayer('z', -1, -1); // Back CW (CW around -Z is CCW around Z)
|
|
cube2.applyMove('B');
|
|
compareCubes(cube1, cube2, "Back Layer CW matches B");
|
|
|