wjttc 1.0.1 ā 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +39 -31
- package/dist/__tests__/badge.test.d.ts +6 -0
- package/dist/__tests__/badge.test.d.ts.map +1 -0
- package/dist/__tests__/badge.test.js +86 -0
- package/dist/__tests__/badge.test.js.map +1 -0
- package/dist/__tests__/certifier.test.d.ts +7 -0
- package/dist/__tests__/certifier.test.d.ts.map +1 -0
- package/dist/__tests__/certifier.test.js +451 -0
- package/dist/__tests__/certifier.test.js.map +1 -0
- package/dist/__tests__/slow-fast.test.d.ts +11 -0
- package/dist/__tests__/slow-fast.test.d.ts.map +1 -0
- package/dist/__tests__/slow-fast.test.js +324 -0
- package/dist/__tests__/slow-fast.test.js.map +1 -0
- package/dist/cli.js +4 -4
- package/dist/cli.js.map +1 -1
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# WJTTC
|
|
1
|
+
# WJTTC/š
|
|
2
2
|
|
|
3
3
|
**The FAF Foundation Testing Standard for MCP Servers**
|
|
4
4
|
|
|
@@ -7,21 +7,34 @@
|
|
|
7
7
|
|
|
8
8
|
> *"When brakes must work flawlessly, so must our MCP servers"*
|
|
9
9
|
|
|
10
|
-
> *"TEST the TESTING"* ā wolfejam
|
|
11
|
-
|
|
12
10
|
---
|
|
13
11
|
|
|
14
12
|
## What is WJTTC?
|
|
15
13
|
|
|
16
|
-
WJTTC is
|
|
14
|
+
WJTTC is the **WolfeJam Technical Testing Certification**. wolfejam is the dev who created the [IANA-registered .faf format](https://www.iana.org/assignments/media-types/application/vnd.faf+yaml) for AI context - the first and only MCP of its kind. He achieved this largely due to his obsession with technical details and testing.
|
|
15
|
+
|
|
16
|
+
WJTTC is the rollout of his self-certification secrets to help grade other MCP servers for free, with a view to improving MCP server quality system-wide.
|
|
17
17
|
|
|
18
|
-
**
|
|
18
|
+
**Score your Server for free. Full leaderboard going live soon - what will your server score?**
|
|
19
19
|
|
|
20
20
|
---
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## What is Big Orange?
|
|
23
|
+
|
|
24
|
+
The š **Big Orange** is a super-score - recognition that the Server Owner(s) have gone above and beyond the 100% pass rate.
|
|
25
|
+
|
|
26
|
+
- **100%** = Pass all 46 tests across ALL 7 tiers
|
|
27
|
+
- **+5%** = Awarded for documentation and professional polish
|
|
28
|
+
|
|
29
|
+
The š, much like a Michelin Star for a restaurant, is awarded for excellence and well-deserved for Best-of-Class MCP servers.
|
|
30
|
+
|
|
31
|
+
**Did you know?** Most MCP servers on the registry score Silver or below. Only 3 servers have achieved š Big Orange certification.
|
|
32
|
+
|
|
33
|
+
*Full leaderboard coming soon.*
|
|
23
34
|
|
|
24
|
-
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Certification Tiers
|
|
25
38
|
|
|
26
39
|
| Tier | Score | Badge | Meaning |
|
|
27
40
|
|------|-------|-------|---------|
|
|
@@ -33,7 +46,6 @@ WJTTC is a comprehensive 7-tier certification system for [Model Context Protocol
|
|
|
33
46
|
| Green | 70%+ | š¢ | Good - Solid foundation |
|
|
34
47
|
| Yellow | 55%+ | š” | Caution - Needs improvement |
|
|
35
48
|
| Red | <55% | š“ | Critical - Major work needed |
|
|
36
|
-
| White | 0% | š¤ | Empty - No context |
|
|
37
49
|
|
|
38
50
|
---
|
|
39
51
|
|
|
@@ -51,28 +63,29 @@ npx wjttc certify --mcp "npx your-mcp-server"
|
|
|
51
63
|
|
|
52
64
|
---
|
|
53
65
|
|
|
54
|
-
## Current
|
|
55
|
-
|
|
56
|
-
| Server | Score | Tier |
|
|
57
|
-
|--------|-------|------|
|
|
58
|
-
| claude-faf-mcp | 105% | š Big Orange |
|
|
59
|
-
| @upstash/context7-mcp | 95% | š„ Silver |
|
|
60
|
-
| @modelcontextprotocol/server-memory | 91% | š„ Bronze |
|
|
61
|
-
| @modelcontextprotocol/server-filesystem | 86% | š„ Bronze |
|
|
66
|
+
## Current š Big Orange Holders
|
|
62
67
|
|
|
63
|
-
|
|
68
|
+
| Server | Score | Status |
|
|
69
|
+
|--------|-------|--------|
|
|
70
|
+
| claude-faf-mcp š | 105% | Certified |
|
|
71
|
+
| faf-mcp š | 105% | Certified |
|
|
72
|
+
| grok-faf-mcp š | 105% | Certified |
|
|
64
73
|
|
|
65
74
|
---
|
|
66
75
|
|
|
67
|
-
##
|
|
76
|
+
## Test System
|
|
68
77
|
|
|
69
|
-
**
|
|
78
|
+
**46 tests across 7 tiers:**
|
|
70
79
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
| Tier | Name | Weight | Tests |
|
|
81
|
+
|------|------|--------|-------|
|
|
82
|
+
| 1 | Protocol Compliance | 20% | 12 |
|
|
83
|
+
| 2 | Capability Negotiation | 10% | 8 |
|
|
84
|
+
| 3 | Tool Integrity | 20% | 6 |
|
|
85
|
+
| 4 | Resource Management | 10% | 6 |
|
|
86
|
+
| 5 | Security Validation | 15% | 3 |
|
|
87
|
+
| 6 | Performance Benchmarks | 15% | 6 |
|
|
88
|
+
| 7 | Integration Readiness | 10% | 5 |
|
|
76
89
|
|
|
77
90
|
---
|
|
78
91
|
|
|
@@ -96,11 +109,6 @@ See [WJTTC-CERTIFIED.md](./WJTTC-CERTIFIED.md) for full certification records.
|
|
|
96
109
|
|
|
97
110
|
---
|
|
98
111
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
MIT
|
|
102
|
-
|
|
103
|
-
---
|
|
104
|
-
|
|
105
|
-
*WJTTC - WolfeJam Technical & Testing Center*
|
|
112
|
+
*WJTTC/š - WolfeJam Technical & Testing Center*
|
|
106
113
|
*FAF Foundation Testing Standard*
|
|
114
|
+
*F1-Inspired Software Engineering*
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/badge.test.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WJTTC Badge Generator Tests
|
|
4
|
+
* Testing the testing tool - F1 grade
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
const badge_1 = require("../badge");
|
|
8
|
+
describe('BadgeGenerator', () => {
|
|
9
|
+
describe('generate()', () => {
|
|
10
|
+
it('should generate valid badge JSON for big-orange tier', () => {
|
|
11
|
+
const badge = badge_1.BadgeGenerator.generate({ score: 105, tier: 'big-orange' });
|
|
12
|
+
expect(badge.schemaVersion).toBe(1);
|
|
13
|
+
expect(badge.label).toBe('WJTTC');
|
|
14
|
+
expect(badge.message).toContain('big-orange');
|
|
15
|
+
expect(badge.message).toContain('105%');
|
|
16
|
+
expect(badge.color).toBe('FF8C00');
|
|
17
|
+
});
|
|
18
|
+
it('should generate valid badge JSON for trophy tier', () => {
|
|
19
|
+
const badge = badge_1.BadgeGenerator.generate({ score: 100, tier: 'trophy' });
|
|
20
|
+
expect(badge.message).toContain('trophy');
|
|
21
|
+
expect(badge.message).toContain('100%');
|
|
22
|
+
expect(badge.color).toBe('FFD700');
|
|
23
|
+
});
|
|
24
|
+
it('should generate valid badge JSON for silver tier', () => {
|
|
25
|
+
const badge = badge_1.BadgeGenerator.generate({ score: 95, tier: 'silver' });
|
|
26
|
+
expect(badge.message).toContain('silver');
|
|
27
|
+
expect(badge.message).toContain('95%');
|
|
28
|
+
expect(badge.color).toBe('C0C0C0');
|
|
29
|
+
});
|
|
30
|
+
it('should generate valid badge JSON for bronze tier', () => {
|
|
31
|
+
const badge = badge_1.BadgeGenerator.generate({ score: 85, tier: 'bronze' });
|
|
32
|
+
expect(badge.message).toContain('bronze');
|
|
33
|
+
expect(badge.color).toBe('CD7F32');
|
|
34
|
+
});
|
|
35
|
+
it('should generate valid badge JSON for red tier', () => {
|
|
36
|
+
const badge = badge_1.BadgeGenerator.generate({ score: 40, tier: 'red' });
|
|
37
|
+
expect(badge.message).toContain('red');
|
|
38
|
+
expect(badge.color).toBe('D50000');
|
|
39
|
+
});
|
|
40
|
+
it('should include correct emoji for each tier', () => {
|
|
41
|
+
const tiers = ['big-orange', 'trophy', 'gold', 'silver', 'bronze', 'green', 'yellow', 'red', 'white'];
|
|
42
|
+
const emojis = ['š', 'š', 'š„', 'š„', 'š„', 'š¢', 'š”', 'š“', 'š¤'];
|
|
43
|
+
tiers.forEach((tier, index) => {
|
|
44
|
+
const badge = badge_1.BadgeGenerator.generate({ score: 100, tier });
|
|
45
|
+
expect(badge.message).toContain(emojis[index]);
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
describe('generateUrl()', () => {
|
|
50
|
+
it('should generate a valid shields.io URL', () => {
|
|
51
|
+
const url = badge_1.BadgeGenerator.generateUrl({ score: 95, tier: 'silver' });
|
|
52
|
+
expect(url).toContain('https://img.shields.io/endpoint');
|
|
53
|
+
expect(url).toContain('data:application/json');
|
|
54
|
+
});
|
|
55
|
+
it('should include encoded badge data in URL', () => {
|
|
56
|
+
const url = badge_1.BadgeGenerator.generateUrl({ score: 105, tier: 'big-orange' });
|
|
57
|
+
expect(url).toContain('WJTTC');
|
|
58
|
+
expect(url).toContain('FF8C00');
|
|
59
|
+
});
|
|
60
|
+
});
|
|
61
|
+
describe('generateMarkdown()', () => {
|
|
62
|
+
it('should generate valid markdown without repo URL', () => {
|
|
63
|
+
const md = badge_1.BadgeGenerator.generateMarkdown({ score: 95, tier: 'silver' });
|
|
64
|
+
expect(md).toMatch(/^!\[WJTTC silver\]\(https:\/\/img\.shields\.io/);
|
|
65
|
+
});
|
|
66
|
+
it('should generate linked markdown with repo URL', () => {
|
|
67
|
+
const md = badge_1.BadgeGenerator.generateMarkdown({ score: 105, tier: 'big-orange' }, 'https://github.com/example/repo');
|
|
68
|
+
expect(md).toMatch(/^\[!\[WJTTC big-orange\]/);
|
|
69
|
+
expect(md).toContain('https://github.com/example/repo');
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
describe('generateHtml()', () => {
|
|
73
|
+
it('should generate valid HTML img tag without repo URL', () => {
|
|
74
|
+
const html = badge_1.BadgeGenerator.generateHtml({ score: 85, tier: 'bronze' });
|
|
75
|
+
expect(html).toMatch(/^<img src="https:\/\/img\.shields\.io/);
|
|
76
|
+
expect(html).toContain('alt="WJTTC bronze"');
|
|
77
|
+
});
|
|
78
|
+
it('should generate linked HTML with repo URL', () => {
|
|
79
|
+
const html = badge_1.BadgeGenerator.generateHtml({ score: 100, tier: 'trophy' }, 'https://github.com/example/repo');
|
|
80
|
+
expect(html).toMatch(/^<a href="https:\/\/github\.com\/example\/repo">/);
|
|
81
|
+
expect(html).toContain('<img');
|
|
82
|
+
expect(html).toContain('</a>');
|
|
83
|
+
});
|
|
84
|
+
});
|
|
85
|
+
});
|
|
86
|
+
//# sourceMappingURL=badge.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"badge.test.js","sourceRoot":"","sources":["../../src/__tests__/badge.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certifier.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/certifier.test.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
|
|
@@ -0,0 +1,451 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WJTTC Certifier Tests
|
|
4
|
+
* Comprehensive tests for the core certification engine
|
|
5
|
+
* "Testing the tester" - F1 Championship Grade
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
9
|
+
// TIER SYSTEM CONSTANTS (extracted for testing)
|
|
10
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
11
|
+
const TIER_NAMES = {
|
|
12
|
+
1: 'Protocol Compliance',
|
|
13
|
+
2: 'Capability Negotiation',
|
|
14
|
+
3: 'Tool Integrity',
|
|
15
|
+
4: 'Resource Management',
|
|
16
|
+
5: 'Security Validation',
|
|
17
|
+
6: 'Performance Benchmarks',
|
|
18
|
+
7: 'Integration Readiness',
|
|
19
|
+
};
|
|
20
|
+
const TIER_WEIGHTS = {
|
|
21
|
+
1: 20,
|
|
22
|
+
2: 10,
|
|
23
|
+
3: 20,
|
|
24
|
+
4: 10,
|
|
25
|
+
5: 15,
|
|
26
|
+
6: 15,
|
|
27
|
+
7: 10,
|
|
28
|
+
};
|
|
29
|
+
const TIER_TEST_COUNTS = {
|
|
30
|
+
1: 12,
|
|
31
|
+
2: 8,
|
|
32
|
+
3: 6,
|
|
33
|
+
4: 6,
|
|
34
|
+
5: 3,
|
|
35
|
+
6: 6,
|
|
36
|
+
7: 5,
|
|
37
|
+
};
|
|
38
|
+
// Score tier boundaries
|
|
39
|
+
const TIER_BOUNDARIES = [
|
|
40
|
+
{ min: 105, max: 105, tier: 'big-orange' },
|
|
41
|
+
{ min: 100, max: 104, tier: 'trophy' },
|
|
42
|
+
{ min: 99, max: 99, tier: 'gold' },
|
|
43
|
+
{ min: 95, max: 98, tier: 'silver' },
|
|
44
|
+
{ min: 85, max: 94, tier: 'bronze' },
|
|
45
|
+
{ min: 70, max: 84, tier: 'green' },
|
|
46
|
+
{ min: 55, max: 69, tier: 'yellow' },
|
|
47
|
+
{ min: 0, max: 54, tier: 'red' },
|
|
48
|
+
];
|
|
49
|
+
// Helper to determine tier from score
|
|
50
|
+
function getTierFromScore(score) {
|
|
51
|
+
if (score >= 105)
|
|
52
|
+
return 'big-orange';
|
|
53
|
+
if (score >= 100)
|
|
54
|
+
return 'trophy';
|
|
55
|
+
if (score >= 99)
|
|
56
|
+
return 'gold';
|
|
57
|
+
if (score >= 95)
|
|
58
|
+
return 'silver';
|
|
59
|
+
if (score >= 85)
|
|
60
|
+
return 'bronze';
|
|
61
|
+
if (score >= 70)
|
|
62
|
+
return 'green';
|
|
63
|
+
if (score >= 55)
|
|
64
|
+
return 'yellow';
|
|
65
|
+
return 'red';
|
|
66
|
+
}
|
|
67
|
+
// Helper to calculate weighted score (mirrors certifier logic)
|
|
68
|
+
function calculateWeightedScore(tierResults) {
|
|
69
|
+
let weightedScore = 0;
|
|
70
|
+
let totalWeight = 0;
|
|
71
|
+
for (const result of tierResults) {
|
|
72
|
+
const weight = TIER_WEIGHTS[result.tier] || 10;
|
|
73
|
+
const tierScore = result.totalTests > 0
|
|
74
|
+
? (result.passedTests / result.totalTests) * 100
|
|
75
|
+
: 0;
|
|
76
|
+
weightedScore += tierScore * weight;
|
|
77
|
+
totalWeight += weight;
|
|
78
|
+
}
|
|
79
|
+
return totalWeight > 0 ? Math.round(weightedScore / totalWeight) : 0;
|
|
80
|
+
}
|
|
81
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
82
|
+
// TIER SYSTEM TESTS
|
|
83
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
84
|
+
describe('Tier System', () => {
|
|
85
|
+
describe('Tier Names', () => {
|
|
86
|
+
it('should have exactly 7 tiers', () => {
|
|
87
|
+
expect(Object.keys(TIER_NAMES)).toHaveLength(7);
|
|
88
|
+
});
|
|
89
|
+
it('should have tier 1 as Protocol Compliance', () => {
|
|
90
|
+
expect(TIER_NAMES[1]).toBe('Protocol Compliance');
|
|
91
|
+
});
|
|
92
|
+
it('should have tier 2 as Capability Negotiation', () => {
|
|
93
|
+
expect(TIER_NAMES[2]).toBe('Capability Negotiation');
|
|
94
|
+
});
|
|
95
|
+
it('should have tier 3 as Tool Integrity', () => {
|
|
96
|
+
expect(TIER_NAMES[3]).toBe('Tool Integrity');
|
|
97
|
+
});
|
|
98
|
+
it('should have tier 4 as Resource Management', () => {
|
|
99
|
+
expect(TIER_NAMES[4]).toBe('Resource Management');
|
|
100
|
+
});
|
|
101
|
+
it('should have tier 5 as Security Validation', () => {
|
|
102
|
+
expect(TIER_NAMES[5]).toBe('Security Validation');
|
|
103
|
+
});
|
|
104
|
+
it('should have tier 6 as Performance Benchmarks', () => {
|
|
105
|
+
expect(TIER_NAMES[6]).toBe('Performance Benchmarks');
|
|
106
|
+
});
|
|
107
|
+
it('should have tier 7 as Integration Readiness', () => {
|
|
108
|
+
expect(TIER_NAMES[7]).toBe('Integration Readiness');
|
|
109
|
+
});
|
|
110
|
+
});
|
|
111
|
+
describe('Tier Weights', () => {
|
|
112
|
+
it('should have exactly 7 tier weights', () => {
|
|
113
|
+
expect(Object.keys(TIER_WEIGHTS)).toHaveLength(7);
|
|
114
|
+
});
|
|
115
|
+
it('should have weights that sum to 100', () => {
|
|
116
|
+
const totalWeight = Object.values(TIER_WEIGHTS).reduce((a, b) => a + b, 0);
|
|
117
|
+
expect(totalWeight).toBe(100);
|
|
118
|
+
});
|
|
119
|
+
it('should have Protocol Compliance (T1) weighted at 20%', () => {
|
|
120
|
+
expect(TIER_WEIGHTS[1]).toBe(20);
|
|
121
|
+
});
|
|
122
|
+
it('should have Capability Negotiation (T2) weighted at 10%', () => {
|
|
123
|
+
expect(TIER_WEIGHTS[2]).toBe(10);
|
|
124
|
+
});
|
|
125
|
+
it('should have Tool Integrity (T3) weighted at 20%', () => {
|
|
126
|
+
expect(TIER_WEIGHTS[3]).toBe(20);
|
|
127
|
+
});
|
|
128
|
+
it('should have Resource Management (T4) weighted at 10%', () => {
|
|
129
|
+
expect(TIER_WEIGHTS[4]).toBe(10);
|
|
130
|
+
});
|
|
131
|
+
it('should have Security Validation (T5) weighted at 15%', () => {
|
|
132
|
+
expect(TIER_WEIGHTS[5]).toBe(15);
|
|
133
|
+
});
|
|
134
|
+
it('should have Performance Benchmarks (T6) weighted at 15%', () => {
|
|
135
|
+
expect(TIER_WEIGHTS[6]).toBe(15);
|
|
136
|
+
});
|
|
137
|
+
it('should have Integration Readiness (T7) weighted at 10%', () => {
|
|
138
|
+
expect(TIER_WEIGHTS[7]).toBe(10);
|
|
139
|
+
});
|
|
140
|
+
});
|
|
141
|
+
describe('Test Counts', () => {
|
|
142
|
+
it('should have 46 total tests across all tiers', () => {
|
|
143
|
+
const totalTests = Object.values(TIER_TEST_COUNTS).reduce((a, b) => a + b, 0);
|
|
144
|
+
expect(totalTests).toBe(46);
|
|
145
|
+
});
|
|
146
|
+
it('should have 12 tests in Tier 1', () => {
|
|
147
|
+
expect(TIER_TEST_COUNTS[1]).toBe(12);
|
|
148
|
+
});
|
|
149
|
+
it('should have 8 tests in Tier 2', () => {
|
|
150
|
+
expect(TIER_TEST_COUNTS[2]).toBe(8);
|
|
151
|
+
});
|
|
152
|
+
it('should have 6 tests in Tier 3', () => {
|
|
153
|
+
expect(TIER_TEST_COUNTS[3]).toBe(6);
|
|
154
|
+
});
|
|
155
|
+
it('should have 6 tests in Tier 4', () => {
|
|
156
|
+
expect(TIER_TEST_COUNTS[4]).toBe(6);
|
|
157
|
+
});
|
|
158
|
+
it('should have 3 tests in Tier 5', () => {
|
|
159
|
+
expect(TIER_TEST_COUNTS[5]).toBe(3);
|
|
160
|
+
});
|
|
161
|
+
it('should have 6 tests in Tier 6', () => {
|
|
162
|
+
expect(TIER_TEST_COUNTS[6]).toBe(6);
|
|
163
|
+
});
|
|
164
|
+
it('should have 5 tests in Tier 7', () => {
|
|
165
|
+
expect(TIER_TEST_COUNTS[7]).toBe(5);
|
|
166
|
+
});
|
|
167
|
+
});
|
|
168
|
+
});
|
|
169
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
170
|
+
// SCORE CALCULATION TESTS
|
|
171
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
172
|
+
describe('Score Calculation', () => {
|
|
173
|
+
describe('Weighted Score Algorithm', () => {
|
|
174
|
+
it('should return 100 when all tests pass', () => {
|
|
175
|
+
const allPassing = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
176
|
+
tier: parseInt(tier),
|
|
177
|
+
passedTests: count,
|
|
178
|
+
totalTests: count,
|
|
179
|
+
}));
|
|
180
|
+
const score = calculateWeightedScore(allPassing);
|
|
181
|
+
expect(score).toBe(100);
|
|
182
|
+
});
|
|
183
|
+
it('should return 0 when no tests pass', () => {
|
|
184
|
+
const nonePassing = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
185
|
+
tier: parseInt(tier),
|
|
186
|
+
passedTests: 0,
|
|
187
|
+
totalTests: count,
|
|
188
|
+
}));
|
|
189
|
+
const score = calculateWeightedScore(nonePassing);
|
|
190
|
+
expect(score).toBe(0);
|
|
191
|
+
});
|
|
192
|
+
it('should return 50 when half tests pass in each tier', () => {
|
|
193
|
+
const halfPassing = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
194
|
+
tier: parseInt(tier),
|
|
195
|
+
passedTests: Math.floor(count / 2),
|
|
196
|
+
totalTests: count,
|
|
197
|
+
}));
|
|
198
|
+
const score = calculateWeightedScore(halfPassing);
|
|
199
|
+
expect(score).toBeGreaterThanOrEqual(45);
|
|
200
|
+
expect(score).toBeLessThanOrEqual(55);
|
|
201
|
+
});
|
|
202
|
+
it('should weight Tier 1 and Tier 3 more heavily (20% each)', () => {
|
|
203
|
+
// Only Tier 1 passing = 20% of 100 = 20
|
|
204
|
+
const onlyTier1 = [
|
|
205
|
+
{ tier: 1, passedTests: TIER_TEST_COUNTS[1], totalTests: TIER_TEST_COUNTS[1] },
|
|
206
|
+
{ tier: 2, passedTests: 0, totalTests: TIER_TEST_COUNTS[2] },
|
|
207
|
+
{ tier: 3, passedTests: 0, totalTests: TIER_TEST_COUNTS[3] },
|
|
208
|
+
{ tier: 4, passedTests: 0, totalTests: TIER_TEST_COUNTS[4] },
|
|
209
|
+
{ tier: 5, passedTests: 0, totalTests: TIER_TEST_COUNTS[5] },
|
|
210
|
+
{ tier: 6, passedTests: 0, totalTests: TIER_TEST_COUNTS[6] },
|
|
211
|
+
{ tier: 7, passedTests: 0, totalTests: TIER_TEST_COUNTS[7] },
|
|
212
|
+
];
|
|
213
|
+
const score = calculateWeightedScore(onlyTier1);
|
|
214
|
+
expect(score).toBe(20);
|
|
215
|
+
});
|
|
216
|
+
it('should correctly calculate partial tier scores', () => {
|
|
217
|
+
// Tier 1: 10/12 passed, weight 20%
|
|
218
|
+
// Score contribution: (10/12) * 100 * 20 / 100 = 16.67
|
|
219
|
+
const partialTier1 = [
|
|
220
|
+
{ tier: 1, passedTests: 10, totalTests: 12 },
|
|
221
|
+
{ tier: 2, passedTests: 0, totalTests: 8 },
|
|
222
|
+
{ tier: 3, passedTests: 0, totalTests: 6 },
|
|
223
|
+
{ tier: 4, passedTests: 0, totalTests: 6 },
|
|
224
|
+
{ tier: 5, passedTests: 0, totalTests: 3 },
|
|
225
|
+
{ tier: 6, passedTests: 0, totalTests: 6 },
|
|
226
|
+
{ tier: 7, passedTests: 0, totalTests: 5 },
|
|
227
|
+
];
|
|
228
|
+
const score = calculateWeightedScore(partialTier1);
|
|
229
|
+
expect(score).toBe(17); // Rounded
|
|
230
|
+
});
|
|
231
|
+
});
|
|
232
|
+
describe('Tier Level Determination', () => {
|
|
233
|
+
it('should return big-orange for score of 105', () => {
|
|
234
|
+
expect(getTierFromScore(105)).toBe('big-orange');
|
|
235
|
+
});
|
|
236
|
+
it('should return trophy for score of 100', () => {
|
|
237
|
+
expect(getTierFromScore(100)).toBe('trophy');
|
|
238
|
+
});
|
|
239
|
+
it('should return gold for score of 99', () => {
|
|
240
|
+
expect(getTierFromScore(99)).toBe('gold');
|
|
241
|
+
});
|
|
242
|
+
it('should return silver for score of 95-98', () => {
|
|
243
|
+
expect(getTierFromScore(95)).toBe('silver');
|
|
244
|
+
expect(getTierFromScore(96)).toBe('silver');
|
|
245
|
+
expect(getTierFromScore(97)).toBe('silver');
|
|
246
|
+
expect(getTierFromScore(98)).toBe('silver');
|
|
247
|
+
});
|
|
248
|
+
it('should return bronze for score of 85-94', () => {
|
|
249
|
+
expect(getTierFromScore(85)).toBe('bronze');
|
|
250
|
+
expect(getTierFromScore(90)).toBe('bronze');
|
|
251
|
+
expect(getTierFromScore(94)).toBe('bronze');
|
|
252
|
+
});
|
|
253
|
+
it('should return green for score of 70-84', () => {
|
|
254
|
+
expect(getTierFromScore(70)).toBe('green');
|
|
255
|
+
expect(getTierFromScore(77)).toBe('green');
|
|
256
|
+
expect(getTierFromScore(84)).toBe('green');
|
|
257
|
+
});
|
|
258
|
+
it('should return yellow for score of 55-69', () => {
|
|
259
|
+
expect(getTierFromScore(55)).toBe('yellow');
|
|
260
|
+
expect(getTierFromScore(62)).toBe('yellow');
|
|
261
|
+
expect(getTierFromScore(69)).toBe('yellow');
|
|
262
|
+
});
|
|
263
|
+
it('should return red for score below 55', () => {
|
|
264
|
+
expect(getTierFromScore(54)).toBe('red');
|
|
265
|
+
expect(getTierFromScore(30)).toBe('red');
|
|
266
|
+
expect(getTierFromScore(0)).toBe('red');
|
|
267
|
+
});
|
|
268
|
+
});
|
|
269
|
+
describe('Tier Boundary Edge Cases', () => {
|
|
270
|
+
it('should handle boundary between trophy (100) and gold (99)', () => {
|
|
271
|
+
expect(getTierFromScore(100)).toBe('trophy');
|
|
272
|
+
expect(getTierFromScore(99)).toBe('gold');
|
|
273
|
+
});
|
|
274
|
+
it('should handle boundary between gold (99) and silver (98)', () => {
|
|
275
|
+
expect(getTierFromScore(99)).toBe('gold');
|
|
276
|
+
expect(getTierFromScore(98)).toBe('silver');
|
|
277
|
+
});
|
|
278
|
+
it('should handle boundary between silver (95) and bronze (94)', () => {
|
|
279
|
+
expect(getTierFromScore(95)).toBe('silver');
|
|
280
|
+
expect(getTierFromScore(94)).toBe('bronze');
|
|
281
|
+
});
|
|
282
|
+
it('should handle boundary between bronze (85) and green (84)', () => {
|
|
283
|
+
expect(getTierFromScore(85)).toBe('bronze');
|
|
284
|
+
expect(getTierFromScore(84)).toBe('green');
|
|
285
|
+
});
|
|
286
|
+
it('should handle boundary between green (70) and yellow (69)', () => {
|
|
287
|
+
expect(getTierFromScore(70)).toBe('green');
|
|
288
|
+
expect(getTierFromScore(69)).toBe('yellow');
|
|
289
|
+
});
|
|
290
|
+
it('should handle boundary between yellow (55) and red (54)', () => {
|
|
291
|
+
expect(getTierFromScore(55)).toBe('yellow');
|
|
292
|
+
expect(getTierFromScore(54)).toBe('red');
|
|
293
|
+
});
|
|
294
|
+
});
|
|
295
|
+
});
|
|
296
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
297
|
+
// BIG ORANGE TESTS - THE MICHELIN STAR
|
|
298
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
299
|
+
describe('Big Orange (105%) - The Michelin Star', () => {
|
|
300
|
+
it('should be 5% above perfect score', () => {
|
|
301
|
+
expect(105 - 100).toBe(5);
|
|
302
|
+
});
|
|
303
|
+
it('should only be achievable with 100% pass rate', () => {
|
|
304
|
+
// Big Orange requires ALL tests passing, then bonus
|
|
305
|
+
const almostPerfect = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
306
|
+
tier: parseInt(tier),
|
|
307
|
+
passedTests: tier === '1' ? count - 1 : count, // Miss 1 test in tier 1
|
|
308
|
+
totalTests: count,
|
|
309
|
+
}));
|
|
310
|
+
const score = calculateWeightedScore(almostPerfect);
|
|
311
|
+
expect(score).toBeLessThan(100);
|
|
312
|
+
expect(getTierFromScore(score)).not.toBe('big-orange');
|
|
313
|
+
});
|
|
314
|
+
it('should represent excellence beyond standard compliance', () => {
|
|
315
|
+
// This is documented behavior - 105% = 100% tests + 5% documentation/polish bonus
|
|
316
|
+
expect(getTierFromScore(105)).toBe('big-orange');
|
|
317
|
+
expect(getTierFromScore(104)).not.toBe('big-orange');
|
|
318
|
+
});
|
|
319
|
+
});
|
|
320
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
321
|
+
// TYPE DEFINITIONS TESTS
|
|
322
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
323
|
+
describe('Type Definitions', () => {
|
|
324
|
+
describe('TierLevel Type', () => {
|
|
325
|
+
const validTiers = [
|
|
326
|
+
'big-orange',
|
|
327
|
+
'trophy',
|
|
328
|
+
'gold',
|
|
329
|
+
'silver',
|
|
330
|
+
'bronze',
|
|
331
|
+
'green',
|
|
332
|
+
'yellow',
|
|
333
|
+
'red',
|
|
334
|
+
'white',
|
|
335
|
+
];
|
|
336
|
+
it('should include all 9 tier levels', () => {
|
|
337
|
+
expect(validTiers).toHaveLength(9);
|
|
338
|
+
});
|
|
339
|
+
it('should include big-orange as highest tier', () => {
|
|
340
|
+
expect(validTiers).toContain('big-orange');
|
|
341
|
+
});
|
|
342
|
+
it('should include white as lowest/empty tier', () => {
|
|
343
|
+
expect(validTiers).toContain('white');
|
|
344
|
+
});
|
|
345
|
+
it('should include all medal tiers (gold, silver, bronze)', () => {
|
|
346
|
+
expect(validTiers).toContain('gold');
|
|
347
|
+
expect(validTiers).toContain('silver');
|
|
348
|
+
expect(validTiers).toContain('bronze');
|
|
349
|
+
});
|
|
350
|
+
it('should include traffic light tiers (green, yellow, red)', () => {
|
|
351
|
+
expect(validTiers).toContain('green');
|
|
352
|
+
expect(validTiers).toContain('yellow');
|
|
353
|
+
expect(validTiers).toContain('red');
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
});
|
|
357
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
358
|
+
// CERTIFICATION RESULT STRUCTURE TESTS
|
|
359
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
360
|
+
describe('Certification Result Structure', () => {
|
|
361
|
+
// Mock result structure for testing
|
|
362
|
+
const mockResult = {
|
|
363
|
+
score: 95,
|
|
364
|
+
totalTests: 46,
|
|
365
|
+
passedTests: 44,
|
|
366
|
+
failedTests: 2,
|
|
367
|
+
tierResults: [
|
|
368
|
+
{ tier: 1, name: 'Protocol Compliance', passed: true, passedTests: 12, totalTests: 12, failedTests: [], duration: 100 },
|
|
369
|
+
{ tier: 2, name: 'Capability Negotiation', passed: true, passedTests: 8, totalTests: 8, failedTests: [], duration: 50 },
|
|
370
|
+
{ tier: 3, name: 'Tool Integrity', passed: false, passedTests: 5, totalTests: 6, failedTests: ['Test failed'], duration: 200 },
|
|
371
|
+
],
|
|
372
|
+
timestamp: '2025-12-02T00:00:00.000Z',
|
|
373
|
+
};
|
|
374
|
+
it('should have required score field', () => {
|
|
375
|
+
expect(mockResult).toHaveProperty('score');
|
|
376
|
+
expect(typeof mockResult.score).toBe('number');
|
|
377
|
+
});
|
|
378
|
+
it('should have required totalTests field', () => {
|
|
379
|
+
expect(mockResult).toHaveProperty('totalTests');
|
|
380
|
+
expect(typeof mockResult.totalTests).toBe('number');
|
|
381
|
+
});
|
|
382
|
+
it('should have required passedTests field', () => {
|
|
383
|
+
expect(mockResult).toHaveProperty('passedTests');
|
|
384
|
+
expect(typeof mockResult.passedTests).toBe('number');
|
|
385
|
+
});
|
|
386
|
+
it('should have required failedTests field', () => {
|
|
387
|
+
expect(mockResult).toHaveProperty('failedTests');
|
|
388
|
+
expect(typeof mockResult.failedTests).toBe('number');
|
|
389
|
+
});
|
|
390
|
+
it('should have required tierResults array', () => {
|
|
391
|
+
expect(mockResult).toHaveProperty('tierResults');
|
|
392
|
+
expect(Array.isArray(mockResult.tierResults)).toBe(true);
|
|
393
|
+
});
|
|
394
|
+
it('should have required timestamp field', () => {
|
|
395
|
+
expect(mockResult).toHaveProperty('timestamp');
|
|
396
|
+
expect(typeof mockResult.timestamp).toBe('string');
|
|
397
|
+
});
|
|
398
|
+
it('should have passedTests + failedTests equal totalTests', () => {
|
|
399
|
+
expect(mockResult.passedTests + mockResult.failedTests).toBe(mockResult.totalTests);
|
|
400
|
+
});
|
|
401
|
+
});
|
|
402
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
403
|
+
// TIER RESULT STRUCTURE TESTS
|
|
404
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
405
|
+
describe('Tier Result Structure', () => {
|
|
406
|
+
const mockTierResult = {
|
|
407
|
+
tier: 1,
|
|
408
|
+
name: 'Protocol Compliance',
|
|
409
|
+
passed: true,
|
|
410
|
+
passedTests: 12,
|
|
411
|
+
totalTests: 12,
|
|
412
|
+
failedTests: [],
|
|
413
|
+
duration: 100,
|
|
414
|
+
};
|
|
415
|
+
it('should have tier number', () => {
|
|
416
|
+
expect(mockTierResult).toHaveProperty('tier');
|
|
417
|
+
expect(typeof mockTierResult.tier).toBe('number');
|
|
418
|
+
});
|
|
419
|
+
it('should have tier name', () => {
|
|
420
|
+
expect(mockTierResult).toHaveProperty('name');
|
|
421
|
+
expect(typeof mockTierResult.name).toBe('string');
|
|
422
|
+
});
|
|
423
|
+
it('should have passed boolean', () => {
|
|
424
|
+
expect(mockTierResult).toHaveProperty('passed');
|
|
425
|
+
expect(typeof mockTierResult.passed).toBe('boolean');
|
|
426
|
+
});
|
|
427
|
+
it('should have passedTests count', () => {
|
|
428
|
+
expect(mockTierResult).toHaveProperty('passedTests');
|
|
429
|
+
expect(typeof mockTierResult.passedTests).toBe('number');
|
|
430
|
+
});
|
|
431
|
+
it('should have totalTests count', () => {
|
|
432
|
+
expect(mockTierResult).toHaveProperty('totalTests');
|
|
433
|
+
expect(typeof mockTierResult.totalTests).toBe('number');
|
|
434
|
+
});
|
|
435
|
+
it('should have failedTests array', () => {
|
|
436
|
+
expect(mockTierResult).toHaveProperty('failedTests');
|
|
437
|
+
expect(Array.isArray(mockTierResult.failedTests)).toBe(true);
|
|
438
|
+
});
|
|
439
|
+
it('should have duration in ms', () => {
|
|
440
|
+
expect(mockTierResult).toHaveProperty('duration');
|
|
441
|
+
expect(typeof mockTierResult.duration).toBe('number');
|
|
442
|
+
});
|
|
443
|
+
it('should have passed=true when passedTests equals totalTests', () => {
|
|
444
|
+
expect(mockTierResult.passedTests).toBe(mockTierResult.totalTests);
|
|
445
|
+
expect(mockTierResult.passed).toBe(true);
|
|
446
|
+
});
|
|
447
|
+
it('should have empty failedTests array when all pass', () => {
|
|
448
|
+
expect(mockTierResult.failedTests).toHaveLength(0);
|
|
449
|
+
});
|
|
450
|
+
});
|
|
451
|
+
//# sourceMappingURL=certifier.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"certifier.test.js","sourceRoot":"","sources":["../../src/__tests__/certifier.test.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;AAIH,2EAA2E;AAC3E,gDAAgD;AAChD,2EAA2E;AAE3E,MAAM,UAAU,GAA2B;IACzC,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,wBAAwB;IAC3B,CAAC,EAAE,gBAAgB;IACnB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,qBAAqB;IACxB,CAAC,EAAE,wBAAwB;IAC3B,CAAC,EAAE,uBAAuB;CAC3B,CAAC;AAEF,MAAM,YAAY,GAA2B;IAC3C,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,EAAE;CACN,CAAC;AAEF,MAAM,gBAAgB,GAA2B;IAC/C,CAAC,EAAE,EAAE;IACL,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;IACJ,CAAC,EAAE,CAAC;CACL,CAAC;AAEF,wBAAwB;AACxB,MAAM,eAAe,GAAoD;IACvE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,YAAY,EAAE;IAC1C,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE;IAClC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;IACnC,EAAE,GAAG,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;IACpC,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE;CACjC,CAAC;AAEF,sCAAsC;AACtC,SAAS,gBAAgB,CAAC,KAAa;IACrC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,YAAY,CAAC;IACtC,IAAI,KAAK,IAAI,GAAG;QAAE,OAAO,QAAQ,CAAC;IAClC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,MAAM,CAAC;IAC/B,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,OAAO,CAAC;IAChC,IAAI,KAAK,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAC;IACjC,OAAO,KAAK,CAAC;AACf,CAAC;AAED,+DAA+D;AAC/D,SAAS,sBAAsB,CAAC,WAAwE;IACtG,IAAI,aAAa,GAAG,CAAC,CAAC;IACtB,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,KAAK,MAAM,MAAM,IAAI,WAAW,EAAE,CAAC;QACjC,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,SAAS,GAAG,MAAM,CAAC,UAAU,GAAG,CAAC;YACrC,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,GAAG,GAAG;YAChD,CAAC,CAAC,CAAC,CAAC;QACN,aAAa,IAAI,SAAS,GAAG,MAAM,CAAC;QACpC,WAAW,IAAI,MAAM,CAAC;IACxB,CAAC;IAED,OAAO,WAAW,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AACvE,CAAC;AAED,2EAA2E;AAC3E,oBAAoB;AACpB,2EAA2E;AAE3E,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;IAC3B,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;QAC1B,EAAE,CAAC,6BAA6B,EAAE,GAAG,EAAE;YACrC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,8CAA8C,EAAE,GAAG,EAAE;YACtD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,cAAc,EAAE,GAAG,EAAE;QAC5B,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,qCAAqC,EAAE,GAAG,EAAE;YAC7C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3E,MAAM,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;YACzD,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;YAC9D,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;YAChE,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,aAAa,EAAE,GAAG,EAAE;QAC3B,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;YACrD,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9E,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gCAAgC,EAAE,GAAG,EAAE;YACxC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;YACvC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,0BAA0B;AAC1B,2EAA2E;AAE3E,QAAQ,CAAC,mBAAmB,EAAE,GAAG,EAAE;IACjC,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC1E,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;gBACpB,WAAW,EAAE,KAAK;gBAClB,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC,CAAC;YAEJ,MAAM,KAAK,GAAG,sBAAsB,CAAC,UAAU,CAAC,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3E,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;gBACpB,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC,CAAC;YAEJ,MAAM,KAAK,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oDAAoD,EAAE,GAAG,EAAE;YAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;gBAC3E,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;gBACpB,WAAW,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;gBAClC,UAAU,EAAE,KAAK;aAClB,CAAC,CAAC,CAAC;YAEJ,MAAM,KAAK,GAAG,sBAAsB,CAAC,WAAW,CAAC,CAAC;YAClD,MAAM,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,EAAE,CAAC,CAAC;YACzC,MAAM,CAAC,KAAK,CAAC,CAAC,mBAAmB,CAAC,EAAE,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,wCAAwC;YACxC,MAAM,SAAS,GAAG;gBAChB,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAC9E,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;gBAC5D,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,gBAAgB,CAAC,CAAC,CAAC,EAAE;aAC7D,CAAC;YAEF,MAAM,KAAK,GAAG,sBAAsB,CAAC,SAAS,CAAC,CAAC;YAChD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,gDAAgD,EAAE,GAAG,EAAE;YACxD,mCAAmC;YACnC,uDAAuD;YACvD,MAAM,YAAY,GAAG;gBACnB,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE;gBAC5C,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC1C,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC1C,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC1C,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC1C,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;gBAC1C,EAAE,IAAI,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE;aAC3C,CAAC;YAEF,MAAM,KAAK,GAAG,sBAAsB,CAAC,YAAY,CAAC,CAAC;YACnD,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QACpC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;YAC/C,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,oCAAoC,EAAE,GAAG,EAAE;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;YAChD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yCAAyC,EAAE,GAAG,EAAE;YACjD,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;YAC9C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzC,MAAM,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,QAAQ,CAAC,0BAA0B,EAAE,GAAG,EAAE;QACxC,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC7C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC5C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,0DAA0D,EAAE,GAAG,EAAE;YAClE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAC1C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;YACpE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2DAA2D,EAAE,GAAG,EAAE;YACnE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC5C,MAAM,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,uCAAuC;AACvC,2EAA2E;AAE3E,QAAQ,CAAC,uCAAuC,EAAE,GAAG,EAAE;IACrD,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+CAA+C,EAAE,GAAG,EAAE;QACvD,oDAAoD;QACpD,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;YAC7E,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC;YACpB,WAAW,EAAE,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,wBAAwB;YACvE,UAAU,EAAE,KAAK;SAClB,CAAC,CAAC,CAAC;QAEJ,MAAM,KAAK,GAAG,sBAAsB,CAAC,aAAa,CAAC,CAAC;QACpD,MAAM,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAChC,MAAM,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,kFAAkF;QAClF,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QACjD,MAAM,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,yBAAyB;AACzB,2EAA2E;AAE3E,QAAQ,CAAC,kBAAkB,EAAE,GAAG,EAAE;IAChC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,EAAE;QAC9B,MAAM,UAAU,GAAgB;YAC9B,YAAY;YACZ,QAAQ;YACR,MAAM;YACN,QAAQ;YACR,QAAQ;YACR,OAAO;YACP,QAAQ;YACR,KAAK;YACL,OAAO;SACR,CAAC;QAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;YAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,2CAA2C,EAAE,GAAG,EAAE;YACnD,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,uDAAuD,EAAE,GAAG,EAAE;YAC/D,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACrC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;QAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;YACjE,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,MAAM,CAAC,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,CAAC,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,uCAAuC;AACvC,2EAA2E;AAE3E,QAAQ,CAAC,gCAAgC,EAAE,GAAG,EAAE;IAC9C,oCAAoC;IACpC,MAAM,UAAU,GAAG;QACjB,KAAK,EAAE,EAAE;QACT,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,WAAW,EAAE,CAAC;QACd,WAAW,EAAE;YACX,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;YACvH,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,wBAAwB,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE;YACvH,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,aAAa,CAAC,EAAE,QAAQ,EAAE,GAAG,EAAE;SAC/H;QACD,SAAS,EAAE,0BAA0B;KACtC,CAAC;IAEF,EAAE,CAAC,kCAAkC,EAAE,GAAG,EAAE;QAC1C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QAC3C,MAAM,CAAC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,OAAO,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACjD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sCAAsC,EAAE,GAAG,EAAE;QAC9C,MAAM,CAAC,UAAU,CAAC,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAC/C,MAAM,CAAC,OAAO,UAAU,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wDAAwD,EAAE,GAAG,EAAE;QAChE,MAAM,CAAC,UAAU,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IACtF,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,2EAA2E;AAC3E,8BAA8B;AAC9B,2EAA2E;AAE3E,QAAQ,CAAC,uBAAuB,EAAE,GAAG,EAAE;IACrC,MAAM,cAAc,GAAG;QACrB,IAAI,EAAE,CAAC;QACP,IAAI,EAAE,qBAAqB;QAC3B,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,EAAE;QACf,UAAU,EAAE,EAAE;QACd,WAAW,EAAE,EAAE;QACf,QAAQ,EAAE,GAAG;KACd,CAAC;IAEF,EAAE,CAAC,yBAAyB,EAAE,GAAG,EAAE;QACjC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uBAAuB,EAAE,GAAG,EAAE;QAC/B,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,CAAC,OAAO,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,CAAC,OAAO,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACvD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,CAAC,OAAO,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8BAA8B,EAAE,GAAG,EAAE;QACtC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;QACpD,MAAM,CAAC,OAAO,cAAc,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+BAA+B,EAAE,GAAG,EAAE;QACvC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC/D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4BAA4B,EAAE,GAAG,EAAE;QACpC,MAAM,CAAC,cAAc,CAAC,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAClD,MAAM,CAAC,OAAO,cAAc,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QACnE,MAAM,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WJTTC Slow/Fast Test Comparison
|
|
3
|
+
* "Test the Testing" - F1 Philosophy
|
|
4
|
+
*
|
|
5
|
+
* Test-1 (SLOW): Methodical, step-by-step validation
|
|
6
|
+
* Test-2 (FAST): Full suite executed as fast as possible
|
|
7
|
+
*
|
|
8
|
+
* Purpose: Learn about testing itself by comparing results
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=slow-fast.test.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slow-fast.test.d.ts","sourceRoot":"","sources":["../../src/__tests__/slow-fast.test.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG"}
|
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* WJTTC Slow/Fast Test Comparison
|
|
4
|
+
* "Test the Testing" - F1 Philosophy
|
|
5
|
+
*
|
|
6
|
+
* Test-1 (SLOW): Methodical, step-by-step validation
|
|
7
|
+
* Test-2 (FAST): Full suite executed as fast as possible
|
|
8
|
+
*
|
|
9
|
+
* Purpose: Learn about testing itself by comparing results
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
13
|
+
// TEST DATA - Same inputs for both slow and fast
|
|
14
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
15
|
+
const TIER_WEIGHTS = {
|
|
16
|
+
1: 20, 2: 10, 3: 20, 4: 10, 5: 15, 6: 15, 7: 10,
|
|
17
|
+
};
|
|
18
|
+
const TIER_TEST_COUNTS = {
|
|
19
|
+
1: 12, 2: 8, 3: 6, 4: 6, 5: 3, 6: 6, 7: 5,
|
|
20
|
+
};
|
|
21
|
+
const SCORE_BOUNDARIES = [
|
|
22
|
+
{ score: 105, tier: 'big-orange' },
|
|
23
|
+
{ score: 100, tier: 'trophy' },
|
|
24
|
+
{ score: 99, tier: 'gold' },
|
|
25
|
+
{ score: 95, tier: 'silver' },
|
|
26
|
+
{ score: 85, tier: 'bronze' },
|
|
27
|
+
{ score: 70, tier: 'green' },
|
|
28
|
+
{ score: 55, tier: 'yellow' },
|
|
29
|
+
{ score: 54, tier: 'red' },
|
|
30
|
+
{ score: 0, tier: 'red' },
|
|
31
|
+
];
|
|
32
|
+
// Helper functions
|
|
33
|
+
function calculateWeightedScore(tierResults) {
|
|
34
|
+
let weightedScore = 0;
|
|
35
|
+
let totalWeight = 0;
|
|
36
|
+
for (const result of tierResults) {
|
|
37
|
+
const weight = TIER_WEIGHTS[result.tier] || 10;
|
|
38
|
+
const tierScore = result.totalTests > 0 ? (result.passedTests / result.totalTests) * 100 : 0;
|
|
39
|
+
weightedScore += tierScore * weight;
|
|
40
|
+
totalWeight += weight;
|
|
41
|
+
}
|
|
42
|
+
return totalWeight > 0 ? Math.round(weightedScore / totalWeight) : 0;
|
|
43
|
+
}
|
|
44
|
+
function getTierFromScore(score) {
|
|
45
|
+
if (score >= 105)
|
|
46
|
+
return 'big-orange';
|
|
47
|
+
if (score >= 100)
|
|
48
|
+
return 'trophy';
|
|
49
|
+
if (score >= 99)
|
|
50
|
+
return 'gold';
|
|
51
|
+
if (score >= 95)
|
|
52
|
+
return 'silver';
|
|
53
|
+
if (score >= 85)
|
|
54
|
+
return 'bronze';
|
|
55
|
+
if (score >= 70)
|
|
56
|
+
return 'green';
|
|
57
|
+
if (score >= 55)
|
|
58
|
+
return 'yellow';
|
|
59
|
+
return 'red';
|
|
60
|
+
}
|
|
61
|
+
const slowResults = { testCount: 0, passCount: 0, failCount: 0, duration: 0, results: [] };
|
|
62
|
+
const fastResults = { testCount: 0, passCount: 0, failCount: 0, duration: 0, results: [] };
|
|
63
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
64
|
+
// TEST-1: SLOW - Methodical, Deliberate Testing
|
|
65
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
66
|
+
describe('TEST-1: SLOW - Methodical Testing', () => {
|
|
67
|
+
const startTime = Date.now();
|
|
68
|
+
afterAll(() => {
|
|
69
|
+
slowResults.duration = Date.now() - startTime;
|
|
70
|
+
});
|
|
71
|
+
describe('Tier Weight Validation (Slow)', () => {
|
|
72
|
+
it('SLOW: Weights sum to 100', () => {
|
|
73
|
+
// Methodical: Calculate step by step
|
|
74
|
+
let sum = 0;
|
|
75
|
+
sum += TIER_WEIGHTS[1]; // 20
|
|
76
|
+
sum += TIER_WEIGHTS[2]; // 10
|
|
77
|
+
sum += TIER_WEIGHTS[3]; // 20
|
|
78
|
+
sum += TIER_WEIGHTS[4]; // 10
|
|
79
|
+
sum += TIER_WEIGHTS[5]; // 15
|
|
80
|
+
sum += TIER_WEIGHTS[6]; // 15
|
|
81
|
+
sum += TIER_WEIGHTS[7]; // 10
|
|
82
|
+
slowResults.testCount++;
|
|
83
|
+
const passed = sum === 100;
|
|
84
|
+
if (passed)
|
|
85
|
+
slowResults.passCount++;
|
|
86
|
+
else
|
|
87
|
+
slowResults.failCount++;
|
|
88
|
+
slowResults.results.push({ name: 'weights-sum', passed, value: sum });
|
|
89
|
+
expect(sum).toBe(100);
|
|
90
|
+
});
|
|
91
|
+
it('SLOW: Each weight is positive', () => {
|
|
92
|
+
slowResults.testCount++;
|
|
93
|
+
const allPositive = Object.values(TIER_WEIGHTS).every(w => w > 0);
|
|
94
|
+
if (allPositive)
|
|
95
|
+
slowResults.passCount++;
|
|
96
|
+
else
|
|
97
|
+
slowResults.failCount++;
|
|
98
|
+
slowResults.results.push({ name: 'weights-positive', passed: allPositive });
|
|
99
|
+
expect(allPositive).toBe(true);
|
|
100
|
+
});
|
|
101
|
+
it('SLOW: Exactly 7 tiers defined', () => {
|
|
102
|
+
slowResults.testCount++;
|
|
103
|
+
const count = Object.keys(TIER_WEIGHTS).length;
|
|
104
|
+
const passed = count === 7;
|
|
105
|
+
if (passed)
|
|
106
|
+
slowResults.passCount++;
|
|
107
|
+
else
|
|
108
|
+
slowResults.failCount++;
|
|
109
|
+
slowResults.results.push({ name: 'tier-count', passed, value: count });
|
|
110
|
+
expect(count).toBe(7);
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
describe('Test Count Validation (Slow)', () => {
|
|
114
|
+
it('SLOW: Total tests equal 46', () => {
|
|
115
|
+
slowResults.testCount++;
|
|
116
|
+
let total = 0;
|
|
117
|
+
for (let i = 1; i <= 7; i++) {
|
|
118
|
+
total += TIER_TEST_COUNTS[i];
|
|
119
|
+
}
|
|
120
|
+
const passed = total === 46;
|
|
121
|
+
if (passed)
|
|
122
|
+
slowResults.passCount++;
|
|
123
|
+
else
|
|
124
|
+
slowResults.failCount++;
|
|
125
|
+
slowResults.results.push({ name: 'total-tests', passed, value: total });
|
|
126
|
+
expect(total).toBe(46);
|
|
127
|
+
});
|
|
128
|
+
it('SLOW: Each tier has at least 1 test', () => {
|
|
129
|
+
slowResults.testCount++;
|
|
130
|
+
const allHaveTests = Object.values(TIER_TEST_COUNTS).every(c => c >= 1);
|
|
131
|
+
if (allHaveTests)
|
|
132
|
+
slowResults.passCount++;
|
|
133
|
+
else
|
|
134
|
+
slowResults.failCount++;
|
|
135
|
+
slowResults.results.push({ name: 'min-tests', passed: allHaveTests });
|
|
136
|
+
expect(allHaveTests).toBe(true);
|
|
137
|
+
});
|
|
138
|
+
});
|
|
139
|
+
describe('Score Calculation (Slow)', () => {
|
|
140
|
+
it('SLOW: 100% pass rate = score 100', () => {
|
|
141
|
+
slowResults.testCount++;
|
|
142
|
+
const allPass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
143
|
+
tier: parseInt(tier),
|
|
144
|
+
passedTests: count,
|
|
145
|
+
totalTests: count,
|
|
146
|
+
}));
|
|
147
|
+
const score = calculateWeightedScore(allPass);
|
|
148
|
+
const passed = score === 100;
|
|
149
|
+
if (passed)
|
|
150
|
+
slowResults.passCount++;
|
|
151
|
+
else
|
|
152
|
+
slowResults.failCount++;
|
|
153
|
+
slowResults.results.push({ name: 'perfect-score', passed, value: score });
|
|
154
|
+
expect(score).toBe(100);
|
|
155
|
+
});
|
|
156
|
+
it('SLOW: 0% pass rate = score 0', () => {
|
|
157
|
+
slowResults.testCount++;
|
|
158
|
+
const nonePass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
159
|
+
tier: parseInt(tier),
|
|
160
|
+
passedTests: 0,
|
|
161
|
+
totalTests: count,
|
|
162
|
+
}));
|
|
163
|
+
const score = calculateWeightedScore(nonePass);
|
|
164
|
+
const passed = score === 0;
|
|
165
|
+
if (passed)
|
|
166
|
+
slowResults.passCount++;
|
|
167
|
+
else
|
|
168
|
+
slowResults.failCount++;
|
|
169
|
+
slowResults.results.push({ name: 'zero-score', passed, value: score });
|
|
170
|
+
expect(score).toBe(0);
|
|
171
|
+
});
|
|
172
|
+
it('SLOW: Only T1 passing = score 20', () => {
|
|
173
|
+
slowResults.testCount++;
|
|
174
|
+
const onlyT1 = [
|
|
175
|
+
{ tier: 1, passedTests: 12, totalTests: 12 },
|
|
176
|
+
{ tier: 2, passedTests: 0, totalTests: 8 },
|
|
177
|
+
{ tier: 3, passedTests: 0, totalTests: 6 },
|
|
178
|
+
{ tier: 4, passedTests: 0, totalTests: 6 },
|
|
179
|
+
{ tier: 5, passedTests: 0, totalTests: 3 },
|
|
180
|
+
{ tier: 6, passedTests: 0, totalTests: 6 },
|
|
181
|
+
{ tier: 7, passedTests: 0, totalTests: 5 },
|
|
182
|
+
];
|
|
183
|
+
const score = calculateWeightedScore(onlyT1);
|
|
184
|
+
const passed = score === 20;
|
|
185
|
+
if (passed)
|
|
186
|
+
slowResults.passCount++;
|
|
187
|
+
else
|
|
188
|
+
slowResults.failCount++;
|
|
189
|
+
slowResults.results.push({ name: 'tier1-only', passed, value: score });
|
|
190
|
+
expect(score).toBe(20);
|
|
191
|
+
});
|
|
192
|
+
});
|
|
193
|
+
describe('Tier Boundaries (Slow)', () => {
|
|
194
|
+
SCORE_BOUNDARIES.forEach(({ score, tier }) => {
|
|
195
|
+
it(`SLOW: Score ${score} = ${tier}`, () => {
|
|
196
|
+
slowResults.testCount++;
|
|
197
|
+
const result = getTierFromScore(score);
|
|
198
|
+
const passed = result === tier;
|
|
199
|
+
if (passed)
|
|
200
|
+
slowResults.passCount++;
|
|
201
|
+
else
|
|
202
|
+
slowResults.failCount++;
|
|
203
|
+
slowResults.results.push({ name: `boundary-${score}`, passed, value: result });
|
|
204
|
+
expect(result).toBe(tier);
|
|
205
|
+
});
|
|
206
|
+
});
|
|
207
|
+
});
|
|
208
|
+
});
|
|
209
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
210
|
+
// TEST-2: FAST - Full Suite, Maximum Speed
|
|
211
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
212
|
+
describe('TEST-2: FAST - Speed Run', () => {
|
|
213
|
+
const startTime = Date.now();
|
|
214
|
+
afterAll(() => {
|
|
215
|
+
fastResults.duration = Date.now() - startTime;
|
|
216
|
+
});
|
|
217
|
+
it('FAST: All tier validations in one shot', () => {
|
|
218
|
+
const start = performance.now();
|
|
219
|
+
// Weight sum
|
|
220
|
+
const weightSum = Object.values(TIER_WEIGHTS).reduce((a, b) => a + b, 0);
|
|
221
|
+
fastResults.results.push({ name: 'weights-sum', passed: weightSum === 100, value: weightSum });
|
|
222
|
+
// Weights positive
|
|
223
|
+
const weightsPositive = Object.values(TIER_WEIGHTS).every(w => w > 0);
|
|
224
|
+
fastResults.results.push({ name: 'weights-positive', passed: weightsPositive });
|
|
225
|
+
// Tier count
|
|
226
|
+
const tierCount = Object.keys(TIER_WEIGHTS).length;
|
|
227
|
+
fastResults.results.push({ name: 'tier-count', passed: tierCount === 7, value: tierCount });
|
|
228
|
+
// Total tests
|
|
229
|
+
const totalTests = Object.values(TIER_TEST_COUNTS).reduce((a, b) => a + b, 0);
|
|
230
|
+
fastResults.results.push({ name: 'total-tests', passed: totalTests === 46, value: totalTests });
|
|
231
|
+
// Min tests
|
|
232
|
+
const minTests = Object.values(TIER_TEST_COUNTS).every(c => c >= 1);
|
|
233
|
+
fastResults.results.push({ name: 'min-tests', passed: minTests });
|
|
234
|
+
fastResults.testCount += 5;
|
|
235
|
+
fastResults.passCount += [weightSum === 100, weightsPositive, tierCount === 7, totalTests === 46, minTests].filter(Boolean).length;
|
|
236
|
+
const duration = performance.now() - start;
|
|
237
|
+
expect(weightSum).toBe(100);
|
|
238
|
+
expect(weightsPositive).toBe(true);
|
|
239
|
+
expect(tierCount).toBe(7);
|
|
240
|
+
expect(totalTests).toBe(46);
|
|
241
|
+
expect(minTests).toBe(true);
|
|
242
|
+
});
|
|
243
|
+
it('FAST: All score calculations in one shot', () => {
|
|
244
|
+
const start = performance.now();
|
|
245
|
+
const allPass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
246
|
+
tier: parseInt(tier), passedTests: count, totalTests: count,
|
|
247
|
+
}));
|
|
248
|
+
const nonePass = Object.entries(TIER_TEST_COUNTS).map(([tier, count]) => ({
|
|
249
|
+
tier: parseInt(tier), passedTests: 0, totalTests: count,
|
|
250
|
+
}));
|
|
251
|
+
const onlyT1 = [
|
|
252
|
+
{ tier: 1, passedTests: 12, totalTests: 12 },
|
|
253
|
+
{ tier: 2, passedTests: 0, totalTests: 8 },
|
|
254
|
+
{ tier: 3, passedTests: 0, totalTests: 6 },
|
|
255
|
+
{ tier: 4, passedTests: 0, totalTests: 6 },
|
|
256
|
+
{ tier: 5, passedTests: 0, totalTests: 3 },
|
|
257
|
+
{ tier: 6, passedTests: 0, totalTests: 6 },
|
|
258
|
+
{ tier: 7, passedTests: 0, totalTests: 5 },
|
|
259
|
+
];
|
|
260
|
+
const perfectScore = calculateWeightedScore(allPass);
|
|
261
|
+
const zeroScore = calculateWeightedScore(nonePass);
|
|
262
|
+
const t1Score = calculateWeightedScore(onlyT1);
|
|
263
|
+
fastResults.results.push({ name: 'perfect-score', passed: perfectScore === 100, value: perfectScore });
|
|
264
|
+
fastResults.results.push({ name: 'zero-score', passed: zeroScore === 0, value: zeroScore });
|
|
265
|
+
fastResults.results.push({ name: 'tier1-only', passed: t1Score === 20, value: t1Score });
|
|
266
|
+
fastResults.testCount += 3;
|
|
267
|
+
fastResults.passCount += [perfectScore === 100, zeroScore === 0, t1Score === 20].filter(Boolean).length;
|
|
268
|
+
expect(perfectScore).toBe(100);
|
|
269
|
+
expect(zeroScore).toBe(0);
|
|
270
|
+
expect(t1Score).toBe(20);
|
|
271
|
+
});
|
|
272
|
+
it('FAST: All tier boundaries in one shot', () => {
|
|
273
|
+
const start = performance.now();
|
|
274
|
+
const results = SCORE_BOUNDARIES.map(({ score, tier }) => {
|
|
275
|
+
const result = getTierFromScore(score);
|
|
276
|
+
const passed = result === tier;
|
|
277
|
+
fastResults.results.push({ name: `boundary-${score}`, passed, value: result });
|
|
278
|
+
return passed;
|
|
279
|
+
});
|
|
280
|
+
fastResults.testCount += results.length;
|
|
281
|
+
fastResults.passCount += results.filter(Boolean).length;
|
|
282
|
+
results.forEach((passed, i) => {
|
|
283
|
+
expect(passed).toBe(true);
|
|
284
|
+
});
|
|
285
|
+
});
|
|
286
|
+
});
|
|
287
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
288
|
+
// COMPARISON: Slow vs Fast
|
|
289
|
+
// āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
|
|
290
|
+
describe('COMPARISON: Slow vs Fast Results', () => {
|
|
291
|
+
it('should have same test count', () => {
|
|
292
|
+
expect(slowResults.testCount).toBe(fastResults.testCount);
|
|
293
|
+
});
|
|
294
|
+
it('should have same pass count', () => {
|
|
295
|
+
expect(slowResults.passCount).toBe(fastResults.passCount);
|
|
296
|
+
});
|
|
297
|
+
it('should have same fail count', () => {
|
|
298
|
+
expect(slowResults.failCount).toBe(fastResults.failCount);
|
|
299
|
+
});
|
|
300
|
+
it('should produce identical results for each test', () => {
|
|
301
|
+
// Compare each named result
|
|
302
|
+
const slowMap = new Map(slowResults.results.map(r => [r.name, r]));
|
|
303
|
+
const fastMap = new Map(fastResults.results.map(r => [r.name, r]));
|
|
304
|
+
for (const [name, slowResult] of slowMap) {
|
|
305
|
+
const fastResult = fastMap.get(name);
|
|
306
|
+
expect(fastResult).toBeDefined();
|
|
307
|
+
expect(fastResult?.passed).toBe(slowResult.passed);
|
|
308
|
+
if (slowResult.value !== undefined) {
|
|
309
|
+
expect(fastResult?.value).toBe(slowResult.value);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
});
|
|
313
|
+
it('FAST should be faster than SLOW (learning about testing)', () => {
|
|
314
|
+
// This teaches us: batching tests is more efficient
|
|
315
|
+
// But both should produce identical results
|
|
316
|
+
console.log(`\nš SLOW/FAST COMPARISON:`);
|
|
317
|
+
console.log(` SLOW: ${slowResults.duration}ms for ${slowResults.testCount} logical tests`);
|
|
318
|
+
console.log(` FAST: ${fastResults.duration}ms for ${fastResults.testCount} logical tests`);
|
|
319
|
+
console.log(` Both: ${slowResults.passCount}/${slowResults.testCount} passed`);
|
|
320
|
+
// We don't assert on timing (flaky) but we log for learning
|
|
321
|
+
expect(true).toBe(true);
|
|
322
|
+
});
|
|
323
|
+
});
|
|
324
|
+
//# sourceMappingURL=slow-fast.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slow-fast.test.js","sourceRoot":"","sources":["../../src/__tests__/slow-fast.test.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.js
CHANGED
|
@@ -62,7 +62,7 @@ const program = new commander_1.Command();
|
|
|
62
62
|
program
|
|
63
63
|
.name('wjttc')
|
|
64
64
|
.description('Championship-grade MCP server validation')
|
|
65
|
-
.version('1.
|
|
65
|
+
.version('1.1.0');
|
|
66
66
|
// Main certification command
|
|
67
67
|
program
|
|
68
68
|
.command('certify')
|
|
@@ -79,7 +79,7 @@ program
|
|
|
79
79
|
.action(async (options) => {
|
|
80
80
|
console.log('');
|
|
81
81
|
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
82
|
-
console.log('šļø WJTTC MCP CERTIFICATION');
|
|
82
|
+
console.log('šļø WJTTC š MCP CERTIFICATION');
|
|
83
83
|
console.log('āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā');
|
|
84
84
|
console.log('');
|
|
85
85
|
const certifier = new certifier_1.WJTTCCertifier({
|
|
@@ -210,7 +210,7 @@ function printSummary(result, tier, passed) {
|
|
|
210
210
|
}
|
|
211
211
|
function generateMarkdownReport(result, tier) {
|
|
212
212
|
const emoji = TIERS[tier].emoji;
|
|
213
|
-
return `# ${emoji} WJTTC
|
|
213
|
+
return `# ${emoji} WJTTC š Certification Report
|
|
214
214
|
|
|
215
215
|
## Summary
|
|
216
216
|
|
|
@@ -238,7 +238,7 @@ ${tr.failedTests.map((t) => `- ${t}`).join('\n')}
|
|
|
238
238
|
|
|
239
239
|
---
|
|
240
240
|
|
|
241
|
-
*Generated by WJTTC
|
|
241
|
+
*Generated by WJTTC š*
|
|
242
242
|
*"When brakes must work flawlessly, so must our MCP servers"*
|
|
243
243
|
`;
|
|
244
244
|
}
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;AACA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,yCAAoC;AACpC,2CAA6E;AAC7E,mCAAyC;AACzC,uCAAyB;AACzB,2CAA6B;AAE7B,wDAAwD;AACxD,oDAAoD;AACpD,MAAM,KAAK,GAA4E;IACrF,YAAY,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,6CAA6C,EAAE;IACpG,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,wBAAwB,EAAE;IAC3E,MAAM,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,aAAa,EAAE;IAC7D,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,sBAAsB,EAAE;IACxE,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,2BAA2B,EAAE;IAC7E,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,yBAAyB,EAAE;IAC1E,QAAQ,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,EAAE,OAAO,EAAE,6BAA6B,EAAE;IAC/E,KAAK,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,8BAA8B,EAAE;IAC5E,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,oBAAoB,EAAE;CACrE,CAAC;AAEF,MAAM,OAAO,GAAG,IAAI,mBAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,0CAA0C,CAAC;KACvD,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,6BAA6B;AAC7B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,cAAc,CAAC,cAAc,EAAE,gCAAgC,CAAC;KAChE,MAAM,CAAC,gBAAgB,EAAE,2BAA2B,EAAE,KAAK,CAAC;KAC5D,MAAM,CAAC,mBAAmB,EAAE,uBAAuB,EAAE,QAAQ,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,uCAAuC,EAAE,SAAS,CAAC;KAC/E,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,EAAE,yBAAyB,CAAC;KAC3E,MAAM,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,IAAI,CAAC;KAChE,MAAM,CAAC,uBAAuB,EAAE,4BAA4B,EAAE,KAAK,CAAC;KACpE,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC;KAC/C,MAAM,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;KACtD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,0EAA0E,CAAC,CAAC;IACxF,OAAO,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wjttc",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"mcpName": "io.github.Wolfe-Jam/
|
|
5
|
-
"
|
|
3
|
+
"version": "1.1.0",
|
|
4
|
+
"mcpName": "io.github.Wolfe-Jam/WJTTC",
|
|
5
|
+
"displayName": "WJTTC/š",
|
|
6
|
+
"description": "WolfeJam Technical Testing Certification - Score your MCP server for free. 46 tests, 7 tiers, from the creator of IANA-registered .faf format. Full leaderboard coming soon - what will your server score?",
|
|
6
7
|
"main": "dist/index.js",
|
|
7
8
|
"bin": {
|
|
8
9
|
"wjttc": "dist/cli.js"
|
|
@@ -66,6 +67,7 @@
|
|
|
66
67
|
},
|
|
67
68
|
"devDependencies": {
|
|
68
69
|
"@jest/globals": "^30.1.2",
|
|
70
|
+
"@types/jest": "^30.0.0",
|
|
69
71
|
"@types/node": "^20.11.0",
|
|
70
72
|
"jest": "^29.7.0",
|
|
71
73
|
"ts-jest": "^29.1.0",
|