const chalk = require('chalk');
const RULES = require('../packages/www/src/RULES');
let failGroup = [];


RULES.forEach(RULE => {
    testOne(RULE);
});


function testOne(one) {
    const {
        rule,
        examples,
        title,
        counterExamples
    } = one;
    examples.forEach(example => {
        const isSuccess = rule.test(example);
        if (isSuccess) {
            console.log(chalk.green(`成功: ${title}, 用例: ${example}`));
        } else {
            failGroup.push({title, example, is:'正例'});
            
            console.log(chalk.red(`失败: ${title}, 用例: ${example}`));
        }
    })

    if (counterExamples) {
        counterExamples.forEach(example => {
            const isFail = !rule.test(example);
            if (isFail) {
                console.log(chalk.green(`反例成功(counterExamples): ${title}`));
            } else {
                failGroup.push({title, example, is: '反例'});
                console.log(chalk.red(`反例失败(counterExamples): ${title}, 用例: ${example}`));
            }
        });
    }
}

if(0 === failGroup.length) {
    console.log(chalk.green('\r\n🚀 全部测试通过!'))
} else {
    console.log(chalk.red('='.repeat(30) + '🔥 未通过测试' + '='.repeat(30)));

    // 失败列表
    failGroup.forEach(item=>{
        const str = `${item.title}[${item.is}]: ${item.example}`;
        console.log(chalk.red(str));
    });
}
