UNPKG

agentsqripts

Version:

Comprehensive static code analysis toolkit for identifying technical debt, security vulnerabilities, performance issues, and code quality problems

129 lines (104 loc) 4.67 kB
/** * @file Grade Utils test bridge * @description Bridge test file to import from grade-calculation module */ const qtests = require('qtests'); const { scoreToGrade, gradeToEmoji, calculateGradeFromIssues, getGradeColor, formatGradeDisplay } = require('./grade-calculation'); async function runTests() { console.log('\n=== Testing Grade Calculation Utilities ==='); const results = { total: 0, passed: 0 }; // Test scoreToGrade function results.total++; try { qtests.assert(scoreToGrade(95) === 'A', 'Score 95 should be A'); qtests.assert(scoreToGrade(85) === 'B', 'Score 85 should be B'); qtests.assert(scoreToGrade(75) === 'C', 'Score 75 should be C'); qtests.assert(scoreToGrade(65) === 'D', 'Score 65 should be D'); qtests.assert(scoreToGrade(55) === 'F', 'Score 55 should be F'); console.log('✓ scoreToGrade correctly converts scores to grades'); results.passed++; } catch (error) { console.log(`✗ scoreToGrade test failed: ${error.message}`); } // Test gradeToEmoji function results.total++; try { const emojiA = gradeToEmoji('A'); qtests.assert(typeof emojiA === 'string', 'gradeToEmoji should return string'); qtests.assert(emojiA.length > 0, 'Emoji should not be empty'); const emojiF = gradeToEmoji('F'); qtests.assert(emojiF !== emojiA, 'Different grades should have different emojis'); console.log('✓ gradeToEmoji correctly converts grades to emojis'); results.passed++; } catch (error) { console.log(`✗ gradeToEmoji test failed: ${error.message}`); } // Test calculateGradeFromIssues function results.total++; try { const grade0 = calculateGradeFromIssues(0, 1); qtests.assert(grade0 === 'A', 'No issues should be A grade'); const grade1 = calculateGradeFromIssues(1, 1); qtests.assert(grade1 === 'B', 'One issue per file should be B grade'); const gradeMany = calculateGradeFromIssues(10, 1); qtests.assert(gradeMany === 'F', 'Many issues should be F grade'); console.log('✓ calculateGradeFromIssues correctly calculates grades from issue counts'); results.passed++; } catch (error) { console.log(`✗ calculateGradeFromIssues test failed: ${error.message}`); } // Test getGradeColor function results.total++; try { const colorA = getGradeColor('A'); qtests.assert(typeof colorA === 'string', 'getGradeColor should return string'); qtests.assert(colorA === 'green', 'A grade should be green'); const colorF = getGradeColor('F'); qtests.assert(colorF === 'red', 'F grade should be red'); console.log('✓ getGradeColor correctly maps grades to colors'); results.passed++; } catch (error) { console.log(`✗ getGradeColor test failed: ${error.message}`); } // Test formatGradeDisplay function results.total++; try { const display = formatGradeDisplay('A', true); qtests.assert(typeof display === 'string', 'formatGradeDisplay should return string'); qtests.assert(display.includes('A'), 'Display should include grade letter'); const displayNoEmoji = formatGradeDisplay('A', false); qtests.assert(displayNoEmoji === 'A', 'Display without emoji should be just letter'); console.log('✓ formatGradeDisplay correctly formats grade displays'); results.passed++; } catch (error) { console.log(`✗ formatGradeDisplay test failed: ${error.message}`); } // Test edge cases results.total++; try { qtests.assert(scoreToGrade(100) === 'A', 'Perfect score should be A'); qtests.assert(scoreToGrade(0) === 'F', 'Zero score should be F'); // Test boundary values qtests.assert(scoreToGrade(90) === 'A', 'Boundary 90 should be A'); qtests.assert(scoreToGrade(80) === 'B', 'Boundary 80 should be B'); console.log('✓ Grade utilities correctly handle edge cases'); results.passed++; } catch (error) { console.log(`✗ Edge cases test failed: ${error.message}`); } // Test perfect score calculation results.total++; try { const perfectGrade = calculateGradeFromIssues(0, 5); qtests.assert(perfectGrade === 'A', 'No issues across multiple files should be A'); console.log('✓ Grade calculation handles perfect scores correctly'); results.passed++; } catch (error) { console.log(`✗ Perfect score test failed: ${error.message}`); } console.log(`=== Grade Utilities Test Results ===`); console.log(`Tests passed: ${results.passed}/${results.total}`); console.log(`Success rate: ${((results.passed / results.total) * 100).toFixed(1)}%\n`); return results; } module.exports = { runTests };