Files
SerpentRace/SerpentRace_Backend/test-border-memory.js
T
2025-09-20 11:14:51 +02:00

82 lines
3.7 KiB
JavaScript

// Test the border as memory mapping logic
function testBorderMemoryMapping() {
console.log('=== Testing Border as Memory Mapping Logic ===\n');
// Use your actual border from the test data
const border = [37,48,45,50,39,5,1,55,54,46,23,89,53,94,56,18,14,92,64,61,43,99,27,36,58,40,41,75,57,49,3,65,77,31,72,2,34,19,78,35,69,68,98,20,22,86,63,76,38,85,8,67,95,21,88,51,82,42,79,73,62,97,44,13,28,33,9,11,32,52,96,100,24,70,91,71,15,93,16,80,74,66,59,26,84,83,47,87,7,17,25,90,4,12,30,10,81,6,60,29];
// Test function that mimics the new calculateMovement logic
function calculateMovement(currentPosition, stepValue, diceValue, isPositive) {
console.log(`\n--- Movement Calculation ---`);
console.log(`Current position: ${currentPosition}`);
console.log(`Step value: ${stepValue}, Dice: ${diceValue}, Positive: ${isPositive}`);
// Start at current position as index
let currentIndex = currentPosition - 1;
console.log(`Current index in memory: ${currentIndex}`);
console.log(`Data at current index: border[${currentIndex}] = ${border[currentIndex]}`);
// Calculate total movement through the chain
let totalMovement;
if (isPositive) {
totalMovement = stepValue + diceValue;
} else {
totalMovement = stepValue - diceValue;
}
console.log(`Total movement through chain: ${totalMovement}`);
// Move through the memory chain
let finalIndex = (currentIndex + totalMovement + 1000) % 100;
console.log(`Final index in memory: ${finalIndex}`);
console.log(`Data at final index: border[${finalIndex}] = ${border[finalIndex]}`);
return border[finalIndex];
}
// Test Case 1: Position 12 with step value 1 (from your data)
// Expected results: [10,-1,6,-1,29,-1]
console.log('=== Test Case 1: Position 12, Step 1 (Positive) ===');
console.log('Expected results: [10,-1,6,-1,29,-1]');
const results12 = [];
for (let dice = 1; dice <= 6; dice++) {
const result = calculateMovement(12, 1, dice, true);
results12.push(result);
console.log(`Dice ${dice}: Result = ${result}`);
}
console.log(`Actual results: [${results12.join(', ')}]`);
// Test Case 2: Position 15 with step value 11 (from your data)
// Expected results: [7,17,25,-1,4,12]
console.log('\n=== Test Case 2: Position 15, Step 11 (Positive) ===');
console.log('Expected results: [7,17,25,-1,4,12]');
const results15 = [];
for (let dice = 1; dice <= 6; dice++) {
const result = calculateMovement(15, 11, dice, true);
results15.push(result);
console.log(`Dice ${dice}: Result = ${result}`);
}
console.log(`Actual results: [${results15.join(', ')}]`);
// Test Case 3: Position 18 with step value -46 (negative field)
// Expected results: [32,11,9,33,28,13]
console.log('\n=== Test Case 3: Position 18, Step -46 (Negative) ===');
console.log('Expected results: [32,11,9,33,28,13]');
const results18 = [];
for (let dice = 1; dice <= 6; dice++) {
const result = calculateMovement(18, -46, dice, false);
results18.push(result);
console.log(`Dice ${dice}: Result = ${result}`);
}
console.log(`Actual results: [${results18.join(', ')}]`);
console.log('\n=== Analysis ===');
console.log('This tests the border as a memory mapping where:');
console.log('- Position = Index in the memory array');
console.log('- Movement = Traversing through the memory chain');
console.log('- Result = Data stored at the final memory location');
}
testBorderMemoryMapping();