This commit consolidates scripts and categories under a unified 'Executable' concept. This simplifies the architecture and improves code readability. - Introduce subfolders within `src/domain` to segregate domain elements. - Update class and interface names by removing the 'I' prefix in alignment with new coding standards. - Replace 'Node' with 'Executable' to clarify usage; reserve 'Node' exclusively for the UI's tree component.
47 lines
1.7 KiB
TypeScript
47 lines
1.7 KiB
TypeScript
import { describe } from 'vitest';
|
|
import { NoEmptyLines } from '@/application/Parser/Executable/Script/Validation/Rules/NoEmptyLines';
|
|
import { testCodeValidationRule } from './CodeValidationRuleTestRunner';
|
|
|
|
describe('NoEmptyLines', () => {
|
|
describe('analyze', () => {
|
|
testCodeValidationRule([
|
|
{
|
|
testName: 'no results when code is valid',
|
|
codeLines: ['non-empty-line1', 'none-empty-line2'],
|
|
expected: [],
|
|
sut: new NoEmptyLines(),
|
|
},
|
|
{
|
|
testName: 'shows error for empty line',
|
|
codeLines: ['first line', '', 'third line'],
|
|
expected: [{ index: 2, error: 'Empty line' }],
|
|
sut: new NoEmptyLines(),
|
|
},
|
|
{
|
|
testName: 'shows error for multiple empty lines',
|
|
codeLines: ['first line', '', 'third line', ''],
|
|
expected: [2, 4].map((index) => ({ index, error: 'Empty line' })),
|
|
sut: new NoEmptyLines(),
|
|
},
|
|
{
|
|
testName: 'shows error for whitespace-only lines',
|
|
codeLines: ['first line', ' ', 'third line'],
|
|
expected: [{ index: 2, error: 'Empty line: "{whitespace}{whitespace}"' }],
|
|
sut: new NoEmptyLines(),
|
|
},
|
|
{
|
|
testName: 'shows error for tab-only lines',
|
|
codeLines: ['first line', '\t\t', 'third line'],
|
|
expected: [{ index: 2, error: 'Empty line: "{tab}{tab}"' }],
|
|
sut: new NoEmptyLines(),
|
|
},
|
|
{
|
|
testName: 'shows error for lines that consists of whitespace and tabs',
|
|
codeLines: ['first line', '\t \t', 'third line', ' \t '],
|
|
expected: [{ index: 2, error: 'Empty line: "{tab}{whitespace}{tab}"' }, { index: 4, error: 'Empty line: "{whitespace}{tab}{whitespace}"' }],
|
|
sut: new NoEmptyLines(),
|
|
},
|
|
]);
|
|
});
|
|
});
|