#!/bin/bash # Verify that embedded data can be extracted from combined sources, # and is not sensitive to order. set -euo pipefail if [[ $# -ne 5 ]]; then echo "$0 " exit 1 fi ANGE=$1 CHARLOTTE=$2 DOROTHY=$3 BEATRICE=$4 CHISE=$5 # Concatenate 5 files and verify that output is nonempty. OUTPUT=$(mktemp) cat $ANGE $CHARLOTTE $DOROTHY $BEATRICE $CHISE | ruby > $OUTPUT if [[ ! -s $OUTPUT ]]; then echo "Unexpected empty output" rm -f $OUTPUT exit 1 fi # Exhaustively test all permutations and verify that resulting output # matches first output. function test_order { if ! ( cat $@ | ruby | diff -q $OUTPUT - ); then echo "Mismatched output for order $@" rm -f $OUTPUT exit 1 fi } test_order $ANGE $CHARLOTTE $DOROTHY $BEATRICE $CHISE test_order $ANGE $CHARLOTTE $DOROTHY $CHISE $BEATRICE test_order $ANGE $CHARLOTTE $BEATRICE $DOROTHY $CHISE test_order $ANGE $CHARLOTTE $BEATRICE $CHISE $DOROTHY test_order $ANGE $CHARLOTTE $CHISE $DOROTHY $BEATRICE test_order $ANGE $CHARLOTTE $CHISE $BEATRICE $DOROTHY test_order $ANGE $DOROTHY $CHARLOTTE $BEATRICE $CHISE test_order $ANGE $DOROTHY $CHARLOTTE $CHISE $BEATRICE test_order $ANGE $DOROTHY $BEATRICE $CHARLOTTE $CHISE test_order $ANGE $DOROTHY $BEATRICE $CHISE $CHARLOTTE test_order $ANGE $DOROTHY $CHISE $CHARLOTTE $BEATRICE test_order $ANGE $DOROTHY $CHISE $BEATRICE $CHARLOTTE test_order $ANGE $BEATRICE $CHARLOTTE $DOROTHY $CHISE test_order $ANGE $BEATRICE $CHARLOTTE $CHISE $DOROTHY test_order $ANGE $BEATRICE $DOROTHY $CHARLOTTE $CHISE test_order $ANGE $BEATRICE $DOROTHY $CHISE $CHARLOTTE test_order $ANGE $BEATRICE $CHISE $CHARLOTTE $DOROTHY test_order $ANGE $BEATRICE $CHISE $DOROTHY $CHARLOTTE test_order $ANGE $CHISE $CHARLOTTE $DOROTHY $BEATRICE test_order $ANGE $CHISE $CHARLOTTE $BEATRICE $DOROTHY test_order $ANGE $CHISE $DOROTHY $CHARLOTTE $BEATRICE test_order $ANGE $CHISE $DOROTHY $BEATRICE $CHARLOTTE test_order $ANGE $CHISE $BEATRICE $CHARLOTTE $DOROTHY test_order $ANGE $CHISE $BEATRICE $DOROTHY $CHARLOTTE test_order $CHARLOTTE $ANGE $DOROTHY $BEATRICE $CHISE test_order $CHARLOTTE $ANGE $DOROTHY $CHISE $BEATRICE test_order $CHARLOTTE $ANGE $BEATRICE $DOROTHY $CHISE test_order $CHARLOTTE $ANGE $BEATRICE $CHISE $DOROTHY test_order $CHARLOTTE $ANGE $CHISE $DOROTHY $BEATRICE test_order $CHARLOTTE $ANGE $CHISE $BEATRICE $DOROTHY test_order $CHARLOTTE $DOROTHY $ANGE $BEATRICE $CHISE test_order $CHARLOTTE $DOROTHY $ANGE $CHISE $BEATRICE test_order $CHARLOTTE $DOROTHY $BEATRICE $ANGE $CHISE test_order $CHARLOTTE $DOROTHY $BEATRICE $CHISE $ANGE test_order $CHARLOTTE $DOROTHY $CHISE $ANGE $BEATRICE test_order $CHARLOTTE $DOROTHY $CHISE $BEATRICE $ANGE test_order $CHARLOTTE $BEATRICE $ANGE $DOROTHY $CHISE test_order $CHARLOTTE $BEATRICE $ANGE $CHISE $DOROTHY test_order $CHARLOTTE $BEATRICE $DOROTHY $ANGE $CHISE test_order $CHARLOTTE $BEATRICE $DOROTHY $CHISE $ANGE test_order $CHARLOTTE $BEATRICE $CHISE $ANGE $DOROTHY test_order $CHARLOTTE $BEATRICE $CHISE $DOROTHY $ANGE test_order $CHARLOTTE $CHISE $ANGE $DOROTHY $BEATRICE test_order $CHARLOTTE $CHISE $ANGE $BEATRICE $DOROTHY test_order $CHARLOTTE $CHISE $DOROTHY $ANGE $BEATRICE test_order $CHARLOTTE $CHISE $DOROTHY $BEATRICE $ANGE test_order $CHARLOTTE $CHISE $BEATRICE $ANGE $DOROTHY test_order $CHARLOTTE $CHISE $BEATRICE $DOROTHY $ANGE test_order $DOROTHY $ANGE $CHARLOTTE $BEATRICE $CHISE test_order $DOROTHY $ANGE $CHARLOTTE $CHISE $BEATRICE test_order $DOROTHY $ANGE $BEATRICE $CHARLOTTE $CHISE test_order $DOROTHY $ANGE $BEATRICE $CHISE $CHARLOTTE test_order $DOROTHY $ANGE $CHISE $CHARLOTTE $BEATRICE test_order $DOROTHY $ANGE $CHISE $BEATRICE $CHARLOTTE test_order $DOROTHY $CHARLOTTE $ANGE $BEATRICE $CHISE test_order $DOROTHY $CHARLOTTE $ANGE $CHISE $BEATRICE test_order $DOROTHY $CHARLOTTE $BEATRICE $ANGE $CHISE test_order $DOROTHY $CHARLOTTE $BEATRICE $CHISE $ANGE test_order $DOROTHY $CHARLOTTE $CHISE $ANGE $BEATRICE test_order $DOROTHY $CHARLOTTE $CHISE $BEATRICE $ANGE test_order $DOROTHY $BEATRICE $ANGE $CHARLOTTE $CHISE test_order $DOROTHY $BEATRICE $ANGE $CHISE $CHARLOTTE test_order $DOROTHY $BEATRICE $CHARLOTTE $ANGE $CHISE test_order $DOROTHY $BEATRICE $CHARLOTTE $CHISE $ANGE test_order $DOROTHY $BEATRICE $CHISE $ANGE $CHARLOTTE test_order $DOROTHY $BEATRICE $CHISE $CHARLOTTE $ANGE test_order $DOROTHY $CHISE $ANGE $CHARLOTTE $BEATRICE test_order $DOROTHY $CHISE $ANGE $BEATRICE $CHARLOTTE test_order $DOROTHY $CHISE $CHARLOTTE $ANGE $BEATRICE test_order $DOROTHY $CHISE $CHARLOTTE $BEATRICE $ANGE test_order $DOROTHY $CHISE $BEATRICE $ANGE $CHARLOTTE test_order $DOROTHY $CHISE $BEATRICE $CHARLOTTE $ANGE test_order $BEATRICE $ANGE $CHARLOTTE $DOROTHY $CHISE test_order $BEATRICE $ANGE $CHARLOTTE $CHISE $DOROTHY test_order $BEATRICE $ANGE $DOROTHY $CHARLOTTE $CHISE test_order $BEATRICE $ANGE $DOROTHY $CHISE $CHARLOTTE test_order $BEATRICE $ANGE $CHISE $CHARLOTTE $DOROTHY test_order $BEATRICE $ANGE $CHISE $DOROTHY $CHARLOTTE test_order $BEATRICE $CHARLOTTE $ANGE $DOROTHY $CHISE test_order $BEATRICE $CHARLOTTE $ANGE $CHISE $DOROTHY test_order $BEATRICE $CHARLOTTE $DOROTHY $ANGE $CHISE test_order $BEATRICE $CHARLOTTE $DOROTHY $CHISE $ANGE test_order $BEATRICE $CHARLOTTE $CHISE $ANGE $DOROTHY test_order $BEATRICE $CHARLOTTE $CHISE $DOROTHY $ANGE test_order $BEATRICE $DOROTHY $ANGE $CHARLOTTE $CHISE test_order $BEATRICE $DOROTHY $ANGE $CHISE $CHARLOTTE test_order $BEATRICE $DOROTHY $CHARLOTTE $ANGE $CHISE test_order $BEATRICE $DOROTHY $CHARLOTTE $CHISE $ANGE test_order $BEATRICE $DOROTHY $CHISE $ANGE $CHARLOTTE test_order $BEATRICE $DOROTHY $CHISE $CHARLOTTE $ANGE test_order $BEATRICE $CHISE $ANGE $CHARLOTTE $DOROTHY test_order $BEATRICE $CHISE $ANGE $DOROTHY $CHARLOTTE test_order $BEATRICE $CHISE $CHARLOTTE $ANGE $DOROTHY test_order $BEATRICE $CHISE $CHARLOTTE $DOROTHY $ANGE test_order $BEATRICE $CHISE $DOROTHY $ANGE $CHARLOTTE test_order $BEATRICE $CHISE $DOROTHY $CHARLOTTE $ANGE test_order $CHISE $ANGE $CHARLOTTE $DOROTHY $BEATRICE test_order $CHISE $ANGE $CHARLOTTE $BEATRICE $DOROTHY test_order $CHISE $ANGE $DOROTHY $CHARLOTTE $BEATRICE test_order $CHISE $ANGE $DOROTHY $BEATRICE $CHARLOTTE test_order $CHISE $ANGE $BEATRICE $CHARLOTTE $DOROTHY test_order $CHISE $ANGE $BEATRICE $DOROTHY $CHARLOTTE test_order $CHISE $CHARLOTTE $ANGE $DOROTHY $BEATRICE test_order $CHISE $CHARLOTTE $ANGE $BEATRICE $DOROTHY test_order $CHISE $CHARLOTTE $DOROTHY $ANGE $BEATRICE test_order $CHISE $CHARLOTTE $DOROTHY $BEATRICE $ANGE test_order $CHISE $CHARLOTTE $BEATRICE $ANGE $DOROTHY test_order $CHISE $CHARLOTTE $BEATRICE $DOROTHY $ANGE test_order $CHISE $DOROTHY $ANGE $CHARLOTTE $BEATRICE test_order $CHISE $DOROTHY $ANGE $BEATRICE $CHARLOTTE test_order $CHISE $DOROTHY $CHARLOTTE $ANGE $BEATRICE test_order $CHISE $DOROTHY $CHARLOTTE $BEATRICE $ANGE test_order $CHISE $DOROTHY $BEATRICE $ANGE $CHARLOTTE test_order $CHISE $DOROTHY $BEATRICE $CHARLOTTE $ANGE test_order $CHISE $BEATRICE $ANGE $CHARLOTTE $DOROTHY test_order $CHISE $BEATRICE $ANGE $DOROTHY $CHARLOTTE test_order $CHISE $BEATRICE $CHARLOTTE $ANGE $DOROTHY test_order $CHISE $BEATRICE $CHARLOTTE $DOROTHY $ANGE test_order $CHISE $BEATRICE $DOROTHY $ANGE $CHARLOTTE test_order $CHISE $BEATRICE $DOROTHY $CHARLOTTE $ANGE rm -f $OUTPUT exit 0