Files
P4RS3LT0NGV3/test_transforms.html
T

301 lines
13 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Transform Test Page</title>
<style>
body { font-family: Arial, sans-serif; margin: 20px; }
.test-section { margin: 20px 0; padding: 15px; border: 1px solid #ccc; border-radius: 5px; }
.test-input { width: 100%; padding: 10px; margin: 10px 0; }
.test-output { background: #f5f5f5; padding: 10px; margin: 10px 0; border-radius: 3px; }
.test-button { padding: 8px 16px; margin: 5px; background: #007bff; color: white; border: none; border-radius: 3px; cursor: pointer; }
.test-button:hover { background: #0056b3; }
h2 { color: #333; }
.category { background: #e9ecef; padding: 10px; margin: 10px 0; border-radius: 5px; }
.randomizer-test {
background: linear-gradient(135deg, #f3e5f5, #e1bee7);
border: 2px solid #9c27b0;
position: relative;
}
.randomizer-test::before {
content: '🎲';
position: absolute;
top: -10px;
right: 15px;
font-size: 24px;
background: white;
padding: 0 10px;
}
.randomizer-btn {
background: linear-gradient(135deg, #9c27b0, #ab47bc) !important;
font-weight: bold;
}
</style>
</head>
<body>
<h1>🧪 Transform Test Page</h1>
<p>Test all the new transforms to make sure they work correctly!</p>
<div class="test-section">
<h2>Test Input</h2>
<input type="text" id="testInput" class="test-input" value="Hello World!" placeholder="Enter text to test...">
</div>
<div class="category">
<h2>🔧 Encoding & Decoding</h2>
<button class="test-button" onclick="testTransform('base64')">Test Base64</button>
<button class="test-button" onclick="testTransform('base32')">Test Base32</button>
<button class="test-button" onclick="testTransform('binary')">Test Binary</button>
<button class="test-button" onclick="testTransform('hex')">Test Hex</button>
<div id="output-encoding" class="test-output"></div>
</div>
<div class="category">
<h2>🧙‍♂️ Fantasy Languages</h2>
<button class="test-button" onclick="testTransform('quenya')">Test Quenya</button>
<button class="test-button" onclick="testTransform('tengwar')">Test Tengwar</button>
<button class="test-button" onclick="testTransform('klingon')">Test Klingon</button>
<button class="test-button" onclick="testTransform('aurebesh')">Test Aurebesh</button>
<button class="test-button" onclick="testTransform('dovahzul')">Test Dovahzul</button>
<div id="output-fantasy" class="test-output"></div>
</div>
<div class="category">
<h2>🏛️ Ancient Scripts</h2>
<button class="test-button" onclick="testTransform('hieroglyphics')">Test Hieroglyphics</button>
<button class="test-button" onclick="testTransform('ogham')">Test Ogham</button>
<button class="test-button" onclick="testTransform('elder_futhark')">Test Elder Futhark</button>
<div id="output-ancient" class="test-output"></div>
</div>
<div class="category">
<h2>⚙️ Technical Codes</h2>
<button class="test-button" onclick="testTransform('brainfuck')">Test Brainfuck</button>
<button class="test-button" onclick="testTransform('mathematical')">Test Mathematical</button>
<button class="test-button" onclick="testTransform('chemical')">Test Chemical</button>
<div id="output-technical" class="test-output"></div>
</div>
<div class="category">
<h2>🎨 Visual & Unicode</h2>
<button class="test-button" onclick="testTransform('upside_down')">Test Upside Down</button>
<button class="test-button" onclick="testTransform('medieval')">Test Medieval</button>
<button class="test-button" onclick="testTransform('cursive')">Test Cursive</button>
<button class="test-button" onclick="testTransform('monospace')">Test Monospace</button>
<div id="output-visual" class="test-output"></div>
</div>
<div class="category">
<h2>🔍 Test Reverse Functions</h2>
<button class="test-button" onclick="testReverse('base64')">Test Base64 Reverse</button>
<button class="test-button" onclick="testReverse('quenya')">Test Quenya Reverse</button>
<button class="test-button" onclick="testReverse('upside_down')">Test Upside Down Reverse</button>
<div id="output-reverse" class="test-output"></div>
</div>
<div class="category randomizer-test">
<h2>🎲 Test Randomizer - Code Switching Magic!</h2>
<p>🌟 Apply different transforms to each word! Each run creates a unique mix.</p>
<button class="test-button randomizer-btn" onclick="testRandomizer()">🎯 Test Random Mix</button>
<button class="test-button" onclick="testRandomizerMultiple()">🔄 Test 5 Random Variations</button>
<div id="output-randomizer" class="test-output"></div>
</div>
<div class="category">
<h2>✅ Full SelfTest (roundtrip)</h2>
<p>Runs encode→decode for every transform that provides a reverse function.</p>
<button class="test-button" onclick="runFullSelfTest()">Run Full SelfTest</button>
<div id="output-matrix" class="test-output"></div>
</div>
<script src="js/transforms.js"></script>
<script>
function testTransform(transformName) {
const input = document.getElementById('testInput').value;
const transform = window.transforms[transformName];
if (!transform) {
alert(`Transform '${transformName}' not found!`);
return;
}
try {
const result = transform.func(input);
const category = getTransformCategory(transformName);
const outputId = `output-${category}`;
if (document.getElementById(outputId)) {
document.getElementById(outputId).innerHTML = `
<strong>${transform.name}:</strong><br>
<strong>Input:</strong> ${input}<br>
<strong>Output:</strong> ${result}<br>
<strong>Has Reverse:</strong> ${transform.reverse ? 'Yes' : 'No'}
`;
}
} catch (error) {
alert(`Error testing ${transformName}: ${error.message}`);
}
}
function testReverse(transformName) {
const input = document.getElementById('testInput').value;
const transform = window.transforms[transformName];
if (!transform || !transform.reverse) {
alert(`Transform '${transformName}' has no reverse function!`);
return;
}
try {
// First encode
const encoded = transform.func(input);
// Then decode
const decoded = transform.reverse(encoded);
document.getElementById('output-reverse').innerHTML = `
<strong>${transform.name} Reverse Test:</strong><br>
<strong>Original:</strong> ${input}<br>
<strong>Encoded:</strong> ${encoded}<br>
<strong>Decoded:</strong> ${decoded}<br>
<strong>Match:</strong> ${input === decoded ? '✅ Yes' : '❌ No'}
`;
} catch (error) {
alert(`Error testing reverse for ${transformName}: ${error.message}`);
}
}
function getTransformCategory(transformName) {
const categories = {
'base64': 'encoding',
'base32': 'encoding',
'binary': 'encoding',
'hex': 'encoding',
'quenya': 'fantasy',
'tengwar': 'fantasy',
'klingon': 'fantasy',
'aurebesh': 'fantasy',
'dovahzul': 'fantasy',
'hieroglyphics': 'ancient',
'ogham': 'ancient',
'elder_futhark': 'ancient',
'brainfuck': 'technical',
'mathematical': 'technical',
'chemical': 'technical',
'upside_down': 'visual',
'medieval': 'visual',
'cursive': 'visual',
'monospace': 'visual'
};
return categories[transformName] || 'special';
}
// Test the randomizer
function testRandomizer() {
const input = document.getElementById('testInput').value;
if (!window.transforms.randomizer) {
document.getElementById('output-randomizer').innerHTML = '❌ Randomizer not found!';
return;
}
const result = window.transforms.randomizer.func(input);
const transformInfo = window.transforms.randomizer.getLastTransformInfo();
let infoHTML = '';
if (transformInfo && transformInfo.length > 0) {
infoHTML = '<br><strong>Transform Mapping:</strong><br>';
transformInfo.forEach(info => {
infoHTML += `• "${info.original}" → ${info.transformName}<br>`;
});
}
document.getElementById('output-randomizer').innerHTML = `
<strong>Input:</strong> ${input}<br>
<strong>Random Mix Result:</strong> ${result}${infoHTML}
<strong>Success:</strong> ✅
`;
}
// Test multiple random variations
function testRandomizerMultiple() {
const input = document.getElementById('testInput').value;
if (!window.transforms.randomizer) {
document.getElementById('output-randomizer').innerHTML = '❌ Randomizer not found!';
return;
}
let resultsHTML = `<strong>Input:</strong> ${input}<br><strong>5 Random Variations:</strong><br>`;
for (let i = 1; i <= 5; i++) {
const result = window.transforms.randomizer.func(input);
const transformInfo = window.transforms.randomizer.getLastTransformInfo();
let transforms = '';
if (transformInfo && transformInfo.length > 0) {
transforms = ' (' + transformInfo.map(t => t.transformName).join(', ') + ')';
}
resultsHTML += `<br><strong>Variation ${i}:</strong> ${result}${transforms}`;
}
resultsHTML += '<br><strong>Success:</strong> ✅';
document.getElementById('output-randomizer').innerHTML = resultsHTML;
}
// Auto-test all transforms on page load
window.onload = function() {
console.log('Available transforms:', Object.keys(window.transforms));
console.log('Testing transforms...');
// Test a few key transforms
setTimeout(() => {
testTransform('base64');
testTransform('quenya');
testTransform('upside_down');
// Auto-test randomizer
setTimeout(() => {
console.log('🎲 Auto-testing randomizer...');
testRandomizer();
}, 500);
}, 100);
};
// Full matrix round-trip tester
function runFullSelfTest() {
const samples = [
'Hello World!',
'Attack at dawn 123!',
'Café naïve — résumé',
'🐍🔥 Parsel 🧪'
];
const results = [];
const names = Object.keys(window.transforms);
for (const key of names) {
const t = window.transforms[key];
if (!t || typeof t.func !== 'function' || typeof t.reverse !== 'function') continue;
let ok = true, detail = '';
try {
for (const s of samples) {
const enc = t.func(s);
const dec = t.reverse(enc);
if (dec !== s) { ok = false; detail = `Mismatch on sample "${s}"`; break; }
}
} catch (e) {
ok = false; detail = e.message || String(e);
}
results.push({ name: t.name || key, ok, detail });
}
const passed = results.filter(r => r.ok);
const failed = results.filter(r => !r.ok);
let html = `<strong>Total reversible transforms tested:</strong> ${results.length}<br>`+
`<strong>Passed:</strong> ${passed.length} ✅<br>`+
`<strong>Failed:</strong> ${failed.length} ${failed.length? '❌' : ''}<br>`;
if (failed.length) {
html += '<br><strong>Failures:</strong><br>' + failed.map(f => `${f.name}: ${f.detail}`).join('<br>');
}
document.getElementById('output-matrix').innerHTML = html;
}
</script>
</body>
</html>