aboutsummaryrefslogtreecommitdiff
path: root/tests/ii/strings/generate.pl
diff options
context:
space:
mode:
author_ov4 <ov4@ov4.one>2026-10-16 20:53:55 +0800
committer_ov4 <ov4@ov4.one>2026-10-16 20:53:55 +0800
commitd19f9ddb866ac2415cbfe66966897a8efe8ddb63 (patch)
tree6be1a9a6e316e776a396813f7cb22c688287b21a /tests/ii/strings/generate.pl
parent5c00b8cd03cbfc516cce92229f3f4974d7549c24 (diff)
test(compiler): add seeded C++ differential tests across seven groups
Generate 10000 random records per group plus boundary inputs using a portable SHA-256 stream. Compare native and runner output independently. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Diffstat (limited to 'tests/ii/strings/generate.pl')
-rw-r--r--tests/ii/strings/generate.pl23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/ii/strings/generate.pl b/tests/ii/strings/generate.pl
new file mode 100644
index 0000000..f3ac098
--- /dev/null
+++ b/tests/ii/strings/generate.pl
@@ -0,0 +1,23 @@
+use strict;
+use warnings;
+use FindBin;
+use lib "$FindBin::Bin/..";
+use Random;
+my ($seed, $count) = @ARGV;
+my $rng = Random->new($seed, "strings");
+my @edges = (
+ '1 placeholder 1 0',
+ '0 A 1 1',
+ '0 Ab09 4 1',
+ '0 Ab09 1 4',
+ '0 Ab09 2 0',
+);
+$rng->emit($count, \@edges, sub {
+my $size = $rng->integer(0,24);
+return '1 placeholder 1 0' if $size == 0;
+my @alphabet = split //, 'ABCXYZabcxyz019@_-';
+my $text = join '', map { $alphabet[$rng->integer(0,$#alphabet)] } 1 .. $size;
+my $start = $rng->integer(1,$size);
+my $width = $rng->integer(0,$size-$start+1);
+return "0 $text $start $width";
+});