89 lines
3.3 KiB
TypeScript
89 lines
3.3 KiB
TypeScript
/**
|
|
* Test aby upewnić się, że operatory logiczne (||, &&) nie są mylone z pipe separator |
|
|
*/
|
|
|
|
import { TemplateTransformer } from '../../cli/processors/template/template-transformer';
|
|
|
|
console.log('\n=== Test: Pipe vs Logical Operators ===\n');
|
|
|
|
const transformer = new TemplateTransformer();
|
|
|
|
// Test 1: Operator || nie powinien być traktowany jako pipe
|
|
const test1 = `{{ value || 'default' }}`;
|
|
console.log('Test 1: Operator ||');
|
|
console.log('Input:', test1);
|
|
const result1 = transformer.transformInterpolation(test1);
|
|
console.log('Output:', result1);
|
|
const pass1 = !result1.includes('_pipes?.') && result1.includes('||');
|
|
console.log('Pass:', pass1);
|
|
|
|
// Test 2: Operator && nie powinien być traktowany jako pipe
|
|
const test2 = `{{ condition && value }}`;
|
|
console.log('\nTest 2: Operator &&');
|
|
console.log('Input:', test2);
|
|
const result2 = transformer.transformInterpolation(test2);
|
|
console.log('Output:', result2);
|
|
const pass2 = !result2.includes('_pipes?.') && result2.includes('&&');
|
|
console.log('Pass:', pass2);
|
|
|
|
// Test 3: Prawdziwy pipe powinien być transformowany
|
|
const test3 = `{{ value | uppercase }}`;
|
|
console.log('\nTest 3: Prawdziwy pipe');
|
|
console.log('Input:', test3);
|
|
const result3 = transformer.transformInterpolation(test3);
|
|
console.log('Output:', result3);
|
|
const pass3 = result3.includes('_pipes') && result3.includes('uppercase');
|
|
console.log('Pass:', pass3);
|
|
|
|
// Test 4: Pipe z argumentami
|
|
const test4 = `{{ value | slice:0:10 }}`;
|
|
console.log('\nTest 4: Pipe z argumentami');
|
|
console.log('Input:', test4);
|
|
const result4 = transformer.transformInterpolation(test4);
|
|
console.log('Output:', result4);
|
|
const pass4 = result4.includes('_pipes') && result4.includes('slice');
|
|
console.log('Pass:', pass4);
|
|
|
|
// Test 5: Kombinacja || i pipe
|
|
const test5 = `{{ (value || 'default') | uppercase }}`;
|
|
console.log('\nTest 5: Kombinacja || i pipe');
|
|
console.log('Input:', test5);
|
|
const result5 = transformer.transformInterpolation(test5);
|
|
console.log('Output:', result5);
|
|
const pass5 = result5.includes('_pipes') && result5.includes('||') && result5.includes('uppercase');
|
|
console.log('Pass:', pass5);
|
|
|
|
// Test 6: Wielokrotne ||
|
|
const test6 = `{{ value1 || value2 || 'default' }}`;
|
|
console.log('\nTest 6: Wielokrotne ||');
|
|
console.log('Input:', test6);
|
|
const result6 = transformer.transformInterpolation(test6);
|
|
console.log('Output:', result6);
|
|
const pass6 = !result6.includes('_pipes?.') && (result6.match(/\|\|/g) || []).length === 2;
|
|
console.log('Pass:', pass6);
|
|
|
|
// Test 7: Łańcuch pipes
|
|
const test7 = `{{ value | lowercase | slice:0:5 }}`;
|
|
console.log('\nTest 7: Łańcuch pipes');
|
|
console.log('Input:', test7);
|
|
const result7 = transformer.transformInterpolation(test7);
|
|
console.log('Output:', result7);
|
|
const pass7 = result7.includes('lowercase') && result7.includes('slice');
|
|
console.log('Pass:', pass7);
|
|
|
|
const allTests = [pass1, pass2, pass3, pass4, pass5, pass6, pass7];
|
|
const passed = allTests.filter(p => p).length;
|
|
const failed = allTests.length - passed;
|
|
|
|
console.log('\n=== Summary ===');
|
|
console.log(`Passed: ${passed}/${allTests.length}`);
|
|
console.log(`Failed: ${failed}/${allTests.length}`);
|
|
|
|
if (failed > 0) {
|
|
console.error('\n❌ PIPE VS LOGICAL OPERATORS TEST FAILED');
|
|
process.exit(1);
|
|
} else {
|
|
console.log('\n✅ PIPE VS LOGICAL OPERATORS TEST PASSED');
|
|
process.exit(0);
|
|
}
|