Selkie.git | xt/snapshots/ | 25-plot-streaming.raku
use lib 'lib';
use Selkie::Test::Snapshot;
use Selkie::Widget::Plot;
use Selkie::Sizing;
# A streaming plot with twenty samples pushed before render. The
# native ncuplot handles the actual glyph selection (braille); our
# job is to verify the lifecycle (handle creation on first render,
# buffered samples flushed correctly, render produces non-empty
# output).
my $plot = Selkie::Widget::Plot.new(
type => 'uint',
min-y => 0,
max-y => 100,
sizing => Sizing.flex,
);
# Push a sine-like wave: 20 samples climbing then falling.
my @samples = (10, 25, 40, 55, 70, 85, 95, 100, 95, 85,
70, 55, 40, 25, 10, 5, 0, 5, 15, 30);
for @samples.kv -> $i, $y {
$plot.push-sample($i, $y);
}
print render-to-string($plot, rows => 8, cols => 40);