#!/usr/bin/env bash
set -euo pipefail

root=`dirname "$0"`
root=`node -r fs -p "fs.realpathSync(process.argv[1]);" "$root"`

. "$root/../node_modules/faucet-pipeline-core/test/cli_harness.sh"

# ensures the second file is smaller than the first file
function assert_smaller_size {
	original=$(wc -c < "${1:?}")
	result=$(wc -c < "${2:?}")

	if [ $(bc <<< "$result < $original") != 1 ]; then
		fail "file \`$2\` is not smaller than \`$1\`"
	else
		true
	fi
}

begin "$root/test_basic"
	faucet
	assert_identical "./dist/test.txt" "./src/test.txt"
	assert_identical "./dist/inner/test2.txt" "./src/inner/test2.txt"
end

begin "$root/test_fingerprint"
	faucet --fingerprint
	assert_identical "./dist/test-e59ff97941044f85df5297e1c302d260.txt" "./src/test.txt"
	assert_json "./dist/manifest.json" "./expected.json"
end

begin "$root/test_no_fingerprint"
	faucet --fingerprint
	assert_identical "./dist/no-fingerprint/test.txt" "./src/test.txt"
	assert_identical "./dist/fingerprint/test-e59ff97941044f85df5297e1c302d260.txt" "./src/test.txt"
end

begin "$root/test_manifest_base_uri"
	faucet --fingerprint
	assert_json "./dist/manifest.json" "./expected.json"
end

begin "$root/test_single"
	faucet
	assert_identical "./dist/dist.txt" "./src.txt"
end

begin "$root/test_key_config"
	faucet --fingerprint
	assert_json "./dist/manifest.json" "./expected.json"
end

begin "$root/test_key_for_single_file"
	faucet
	assert_json "./dist/manifest.json" "./expected.json"
end

begin "$root/test_match_dirname"
	faucet
	assert_missing "./dist/test.txt"
	assert_identical "./dist/inner/test2.txt" "./src/inner/test2.txt"
end

begin "$root/test_match_extension"
	faucet
	assert_identical "./dist/test.txt" "./src/test.txt"
	assert_identical "./dist/inner/test2.txt" "./src/inner/test2.txt"
	assert_missing "./dist/nope.json"
end

begin "$root/test_match_negation"
	faucet
	assert_identical "./dist/test.txt" "./src/test.txt"
	assert_missing "./dist/inner/test2.txt"
end

begin "$root/test_match_multiple"
	faucet
	assert_identical "./dist/test.txt" "./src/test.txt"
	assert_missing "./dist/inner/test2.txt" "./src/inner/test2.txt"
	assert_missing "./dist/nope.json"
end

echo; echo "SUCCESS: all tests passed"
