moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,55 @@
import { describe, it, expect } from 'vitest';
import type { MessageType, MessageSubtype } from '@waggle/shared';
import { validateMessageTypeCombo, isRoutedMessage } from '../src/protocol.js';
describe('Waggle Dance protocol', () => {
describe('validateMessageTypeCombo', () => {
it('validates correct request subtypes', () => {
expect(validateMessageTypeCombo('request', 'knowledge_check')).toBe(true);
expect(validateMessageTypeCombo('request', 'task_delegation')).toBe(true);
expect(validateMessageTypeCombo('request', 'skill_request')).toBe(true);
expect(validateMessageTypeCombo('request', 'model_recommendation')).toBe(true);
});
it('validates correct response subtypes', () => {
expect(validateMessageTypeCombo('response', 'knowledge_match')).toBe(true);
expect(validateMessageTypeCombo('response', 'task_claim')).toBe(true);
});
it('validates correct broadcast subtypes', () => {
expect(validateMessageTypeCombo('broadcast', 'discovery')).toBe(true);
expect(validateMessageTypeCombo('broadcast', 'routed_share')).toBe(true);
expect(validateMessageTypeCombo('broadcast', 'skill_share')).toBe(true);
expect(validateMessageTypeCombo('broadcast', 'model_recipe')).toBe(true);
});
it('rejects invalid type-subtype combinations', () => {
expect(validateMessageTypeCombo('request', 'discovery')).toBe(false);
expect(validateMessageTypeCombo('broadcast', 'knowledge_check')).toBe(false);
expect(validateMessageTypeCombo('response', 'skill_share')).toBe(false);
expect(validateMessageTypeCombo('request', 'task_claim')).toBe(false);
});
it('rejects completely invalid types', () => {
expect(validateMessageTypeCombo('invalid' as MessageType, 'discovery')).toBe(false);
});
it('rejects completely invalid subtypes', () => {
expect(validateMessageTypeCombo('request', 'invalid' as MessageSubtype)).toBe(false);
});
});
describe('isRoutedMessage', () => {
it('identifies routed_share as routed', () => {
expect(isRoutedMessage('routed_share')).toBe(true);
});
it('identifies non-routed subtypes', () => {
expect(isRoutedMessage('discovery')).toBe(false);
expect(isRoutedMessage('knowledge_check')).toBe(false);
expect(isRoutedMessage('task_claim')).toBe(false);
expect(isRoutedMessage('skill_share')).toBe(false);
expect(isRoutedMessage('model_recipe')).toBe(false);
});
});
});