Тестування компонентів діаграм та пісочниць
Тестування AsciiDiagram, BoxDiagram, ReactNativePreview та ReactProjectPreview компонентів
Тестування освітніх компонентів
Цей файл містить тести для компонентів: CodeTrace, AsciiDiagram, BoxDiagram, ReactNativePreview, ReactProjectPreview.
00. CodeTrace — покрокове виконання Python
Дані записано скриптом
tools/code-trace/trace.py на реальному CPython. Крокуйте кнопками або стрілками ←→, коли компонент у фокусі.Тест 00.1: Імена, посилання, аліасинг (режим «передбач»)
Аліасинг списку
Завантаження трасування…
Тест 00.2: Стек викликів
Кадри функцій
Завантаження трасування…
Тест 00.3: Замикання та рекурсія (спрощений режим за замовчуванням)
Замикання і рекурсія
Завантаження трасування…
Тест 00.4: Генератор на паузі
Генератор
Завантаження трасування…
Тест 00.5: Виняток, input() і неперехоплена помилка
Винятки
Завантаження трасування…
0. ReactNativePreview — react-native-web
Рендер через
react-native-web у iframe. Це не симулятор iOS/Android.Тест 0.1: View + Text (iPhone)
TSXHello.tsx · View + Text
iPhone
9:41
Loading…
react-native-web · not a real device
import { View, Text, StyleSheet, useColorScheme } from 'react-native';
export default function App() {
const scheme = useColorScheme();
const isDark = scheme === 'dark';
return (
<View style={styles.box}>
<View style={[styles.swatch, { backgroundColor: '#2563EB' }]} />
<View style={[styles.swatch, { backgroundColor: '#16A34A' }]} />
<Text style={[styles.title, { color: isDark ? '#f5f5f7' : '#0f172a' }]}>
Привіт, React Native
</Text>
<Text style={[styles.sub, { color: isDark ? '#a1a1aa' : '#64748b' }]}>
theme: {scheme} · react-native-web
</Text>
</View>
);
}
const styles = StyleSheet.create({
box: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 24,
gap: 12,
},
swatch: {
width: 48,
height: 48,
borderRadius: 12,
},
title: {
marginTop: 8,
fontSize: 20,
fontWeight: '700',
},
sub: {
fontSize: 13,
},
});
Тест 0.2: Pressable + state (Android)
TSXCounter.tsx · Pressable counter
Android
9:41
Loading…
react-native-web · not a real device
import { useState } from 'react';
import { View, Text, Pressable, StyleSheet, useColorScheme } from 'react-native';
export default function App() {
const [count, setCount] = useState(0);
const scheme = useColorScheme();
const isDark = scheme === 'dark';
return (
<View style={styles.screen}>
<Text style={[styles.label, { color: isDark ? '#f5f5f7' : '#111827' }]}>
Натискань: {count}
</Text>
<Pressable
onPress={() => setCount((c) => c + 1)}
style={({ pressed }) => [styles.btn, pressed && styles.btnPressed]}
>
<Text style={styles.btnText}>Tap me</Text>
</Pressable>
<Text style={{ color: isDark ? '#a1a1aa' : '#64748b', fontSize: 12 }}>
theme: {scheme}
</Text>
</View>
);
}
const styles = StyleSheet.create({
screen: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
padding: 24,
gap: 16,
},
label: {
fontSize: 28,
fontWeight: '700',
},
btn: {
backgroundColor: '#2563EB',
paddingVertical: 14,
paddingHorizontal: 28,
borderRadius: 14,
},
btnPressed: {
opacity: 0.85,
transform: [{ scale: 0.98 }],
},
btnText: {
color: '#fff',
fontSize: 16,
fontWeight: '600',
},
});
1. AsciiDiagram - ASCII діаграми
Компонент для відображення ASCII-діаграм з підтримкою тем, підсвічування та рамок.
Можливості:
- ✅ Автоматичне перетворення ASCII → SVG через
bob-wasm(svgbob) - ✅ Fallback до простого текстового рендерингу
- ✅ 5 тем з автоматичним кольоруванням SVG
- ✅ Підтримка темної теми
- ✅ Опціональні рамки (macOS, browser)
Тест 1.1: Базова ASCII діаграма (з svgbob)
Завантаження діаграми...
Тест 1.2: ASCII діаграма з темою "danger"
Завантаження діаграми...
Тест 1.3: ASCII діаграма з підсвічуванням
Завантаження діаграми...
Тест 1.4: ASCII діаграма з рамкою macOS
Завантаження діаграми...
Тест 1.5: Складна ASCII діаграма
Завантаження діаграми...
Тест 1.6: Без svgbob (простий текст)
Завантаження діаграми...
Тест 1.7: Кирилиця (автоматичний fallback)
Важливо: Svgbob не підтримує кирилицю. При виявленні кирилиці компонент автоматично перемикається на текстовий режим (fallback).
Завантаження діаграми...
4. ReactProjectPreview — Multi-file React Sandbox
Тест 4.1: Багатофайловий лічильник (Ізольовані стилі + State)
React Інтерактивний лічильник з компонентами3 файлів
Файли проєкту
localhost:3000
Збирання React застосунку…
Тест 4.2: Вкладені підпапки, JSON та Tailwind CSS v4 (Каталог курсів)
React Каталог курсів IT4 файлів
Файли проєкту
localhost:3000
Збирання React застосунку…