Тестування компонентів діаграм
Тестування AsciiDiagram, BoxDiagram та ReactNativePreview компонентів
Тестування компонентів діаграм
Цей файл містить тести для компонентів: AsciiDiagram, BoxDiagram, ReactNativePreview.
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).
Завантаження діаграми...