1#!/usr/bin/env bash
2
3set -euxo pipefail
4
5mkdir -p out/
6OUT_DIR="$(pwd)/out"
7
8# move to `pdl-compiler` directory
9cd -- "$(dirname -- "${BASH_SOURCE[0]}")/.." &> /dev/null
10
11sed -e 's/little_endian_packets/big_endian_packets/' \
12    -e '/Start: little_endian_only/,/End: little_endian_only/d' \
13    < tests/canonical/le_test_file.pdl > "$OUT_DIR/be_test_file.pdl"
14
15mkdir -p "$OUT_DIR/canonical_test/src"
16
17cargo run --bin pdlc -- \
18    tests/canonical/le_test_file.pdl \
19    --output-format rust \
20    --exclude-declaration UnsizedCustomField \
21    --exclude-declaration Packet_Custom_Field_VariableSize \
22    --exclude-declaration Struct_Custom_Field_VariableSize_ \
23    --exclude-declaration Struct_Custom_Field_VariableSize \
24    --exclude-declaration Checksum \
25    --exclude-declaration Packet_Checksum_Field_FromStart \
26    --exclude-declaration Packet_Checksum_Field_FromEnd \
27    --exclude-declaration Struct_Checksum_Field_FromStart_ \
28    --exclude-declaration Struct_Checksum_Field_FromStart \
29    --exclude-declaration Struct_Checksum_Field_FromEnd_ \
30    --exclude-declaration Struct_Checksum_Field_FromEnd \
31    --exclude-declaration PartialParent5 \
32    --exclude-declaration PartialParent12 \
33    --exclude-declaration PartialChild5_A \
34    --exclude-declaration PartialChild5_B \
35    --exclude-declaration PartialChild12_A \
36    --exclude-declaration PartialChild12_B \
37    --exclude-declaration Packet_Array_Field_UnsizedElement_SizeModifier \
38    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier_ \
39    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier \
40    --exclude-declaration Packet_Array_ElementSize_UnsizedCustomField \
41    --exclude-declaration Packet_Array_ElementSize_SizedCustomField \
42    > "$OUT_DIR/canonical_test/src/le_backend.rs"
43cargo run --bin pdlc -- \
44    tests/canonical/le_test_vectors.json \
45    --output-format rust \
46    --tests \
47    >> "$OUT_DIR/canonical_test/src/le_backend.rs"
48cargo run --bin pdlc -- \
49    "$OUT_DIR/be_test_file.pdl" \
50    --output-format rust \
51    --exclude-declaration UnsizedCustomField \
52    --exclude-declaration Packet_Custom_Field_VariableSize \
53    --exclude-declaration Struct_Custom_Field_VariableSize_ \
54    --exclude-declaration Struct_Custom_Field_VariableSize \
55    --exclude-declaration Checksum \
56    --exclude-declaration Packet_Checksum_Field_FromStart \
57    --exclude-declaration Packet_Checksum_Field_FromEnd \
58    --exclude-declaration Struct_Checksum_Field_FromStart_ \
59    --exclude-declaration Struct_Checksum_Field_FromStart \
60    --exclude-declaration Struct_Checksum_Field_FromEnd_ \
61    --exclude-declaration Struct_Checksum_Field_FromEnd \
62    --exclude-declaration Packet_Array_Field_UnsizedElement_SizeModifier \
63    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier_ \
64    --exclude-declaration Struct_Array_Field_UnsizedElement_SizeModifier \
65    --exclude-declaration Packet_Array_ElementSize_UnsizedCustomField \
66    --exclude-declaration Packet_Array_ElementSize_SizedCustomField \
67    > "$OUT_DIR/canonical_test/src/be_backend.rs"
68cargo run --bin pdlc -- \
69    tests/canonical/be_test_vectors.json \
70    --output-format rust \
71    --tests \
72    >> "$OUT_DIR/canonical_test/src/be_backend.rs"
73
74cat <<EOT > "$OUT_DIR/canonical_test/src/lib.rs"
75mod le_backend;
76mod be_backend;
77EOT
78
79cat <<EOT > "$OUT_DIR/canonical_test/Cargo.toml"
80[package]
81name = "canonical_test"
82version = "0.0.0"
83publish = false
84edition = "2021"
85
86[features]
87default = ["serde"]
88
89[dependencies]
90bytes = {version = "1.4.0", features = ["serde"]}
91thiserror = "1.0.47"
92serde_json = "1.0.86"
93
94[dependencies.serde]
95version = "1.0.145"
96features = ["default", "derive", "serde_derive", "std", "rc"]
97optional = true
98
99[dependencies.pdl-runtime]
100path = "../../pdl-runtime"
101
102[workspace]
103EOT
104
105cd "$OUT_DIR/canonical_test"
106RUSTFLAGS=-Awarnings cargo test --tests
107