feat(math5): Глава 3 «Обыкновенные дроби» — §1–18 + финал (Sonnet по эталону)
Дроби и доли, основное свойство и сокращение, смешанные числа, сравнение, сложение/вычитание/умножение/деление дробей, задачи на дроби; геометрия: параллельные/перпендикулярные прямые, периметр многоугольника, площадь и площадь треугольника, среднее арифметическое, столбчатые диаграммы, параллелепипед и объём (2D-изометрия). Inline-SVG визуалы (полоса долей, сетка умножения, изометрия). Реализовано Sonnet-агентом инкрементально по образцу math_5_ch1; проверено: грузится без ошибок, §1–18 без заглушек. Учебник «Математика 5» наполнен ЦЕЛИКОМ (3 главы, 44 §). Тесты math5: 12/12. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -75,9 +75,31 @@ for (const ch of CHAPTERS) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
test('ch3: §§ без билдеров — заглушка движка (каркас ждёт наполнения)', async () => {
|
test('ch3: дроби + геометрия + объём + финал', async () => {
|
||||||
|
const { doc, errors } = await loadDom('math_5_ch3.html');
|
||||||
|
const win = doc.defaultView;
|
||||||
|
assert.ok(!doc.querySelector('#p1-body .m6-placeholder'), '§1 наполнен');
|
||||||
|
assert.ok(doc.querySelector('#p1-fig svg'), '§1: полоса долей (SVG)');
|
||||||
|
win.goTo('p7'); await wait(80);
|
||||||
|
assert.ok(doc.querySelector('#p7-fig svg'), '§7: сетка умножения дробей (SVG)');
|
||||||
|
win.goTo('p17'); await wait(80);
|
||||||
|
assert.ok(doc.querySelector('#p17-fig svg'), '§17: параллелепипед (изометрия SVG)');
|
||||||
|
win.goTo('p18'); await wait(80);
|
||||||
|
assert.ok(doc.querySelector('#p18-fig svg'), '§18: объём кубиками (изометрия SVG)');
|
||||||
|
win.goTo('final'); await wait(80);
|
||||||
|
assert.ok(doc.querySelector('#fin-go'), 'финал: арена боссов');
|
||||||
|
win.bumpProgress('final', 100); await wait(20);
|
||||||
|
assert.ok(win.M6STATE.achievements.has('ch3_done'), 'достижение «Глава 3 пройдена»');
|
||||||
|
assert.deepEqual(errors, [], 'нет ошибок: ' + errors.join(' | '));
|
||||||
|
});
|
||||||
|
|
||||||
|
test('ch3: все § §1–§18 наполнены (нет заглушек)', async () => {
|
||||||
const { doc } = await loadDom('math_5_ch3.html');
|
const { doc } = await loadDom('math_5_ch3.html');
|
||||||
assert.ok(doc.querySelector('#p1-body .m6-placeholder'), 'ch3: заглушка § 1');
|
const win = doc.defaultView;
|
||||||
|
for (let n = 1; n <= 18; n++) {
|
||||||
|
win.goTo('p' + n); await wait(20);
|
||||||
|
assert.ok(!doc.querySelector('#p' + n + '-body .m6-placeholder'), '§' + n + ' наполнен');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
test('ch2: выражения/уравнения/углы + финал', async () => {
|
test('ch2: выражения/уравнения/углы + финал', async () => {
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user