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");