#!/bin/sh
# Smoke test for the installed characters library; runs offline.
set -eu

work=$(mktemp -d)
export HOME="$work"
trap 'rm -rf "$work"' EXIT INT TERM

DART=$(command -v dart 2>/dev/null || true)
[ -n "$DART" ] || DART=/usr/lib/dart/bin/dart

mkdir -p "$work/.dart_tool"
cat > "$work/.dart_tool/package_config.json" <<'JSON'
{"configVersion":2,"packages":[{"name":"characters","rootUri":"file:///usr/share/dart/packages/characters","packageUri":"lib/","languageVersion":"3.4"}]}
JSON

cat > "$work/main.dart" <<'DART'
import "package:characters/characters.dart";

void main() {
  // An "e" followed by a combining acute accent is one grapheme cluster.
  const s = "e\u0301te\u0301";
  final chars = s.characters;
  if (chars.length != 3) {
    throw StateError("expected 3 grapheme clusters, got ${chars.length}");
  }
  if (chars.first != "e\u0301") {
    throw StateError("unexpected first cluster: ${chars.first}");
  }
  if (chars.skip(1).toString() != "te\u0301") {
    throw StateError("unexpected slice: ${chars.skip(1)}");
  }
  print("characters smoke test passed");
}
DART

cd "$work"
"$DART" run main.dart
