Overview

We translate EO files into initial PHI programs. Next, we normalize these programs and get normalized PHI programs. Then, we collect metrics for initial and normalized PHI programs.

Metrics

An EO file contains multiple test objects. After translation, these test objects become attributes in PHI programs. We call these attributes "tests".

We collect metrics on the number of Dataless formations, Applications, Formations, Dispatches in tests. We want normalized tests to have less such elements than initial tests do.

A metric change for a test is calculated by the formula

(metric_initial - metric_normalized) / metric_initial

where:

Expected

Metric changes are expected to be as follows or greater:

We expect such changes for at least 90.00% of tests.

Actual

We normalized 84 tests.

All metrics were improved for 16 (19.05%) tests.

Tests where a particular metric was improved:

Table

The table below provides detailed information about tests.

Columns

Columns in this table are sortable.

Hover over a header cell from the second row of header cells (Attribute Initial, etc.) to see a triangle demonstrating the sorting order.

Click on the triangle to change the sorting order in the corresponding column.

AttributeChangeInitialNormalizedLocation
Test #Attribute InitialAttribute NormalizedDataless formationsApplicationsFormationsDispatchesDataless formationsApplicationsFormationsDispatchesDataless formationsApplicationsFormationsDispatchesFile InitialBindings Path InitialFile NormalizedBindings Path Normalized
1compares-two-boolscompares-two-bools100.00%0.00%0.00%57.14%11170113pipeline/phi-initial/bool-tests.phiorg.eolangpipeline/phi-normalized/bool-tests.phiorg.eolang
2compares-two-different-typescompares-two-different-types100.00%0.00%0.00%40.00%11150113pipeline/phi-initial/bool-tests.phiorg.eolangpipeline/phi-normalized/bool-tests.phiorg.eolang
3compares-bool-to-bytescompares-bool-to-bytes100.00%80.00%66.67%80.00%153150113pipeline/phi-initial/bool-tests.phiorg.eolangpipeline/phi-normalized/bool-tests.phiorg.eolang
4compares-bool-to-bytes-reversecompares-bool-to-bytes-reverse100.00%80.00%66.67%82.35%153170113pipeline/phi-initial/bool-tests.phiorg.eolangpipeline/phi-normalized/bool-tests.phiorg.eolang
5turns-bytes-into-a-stringturns-bytes-into-a-string100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
6left-zeroleft-zero100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
7left-with-zeroleft-with-zero100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
8left-with-odd-negleft-with-odd-neg100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
9left-with-minus-oneleft-with-minus-one100.00%-300.00%-200.00%-337.50%1318012335pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
10left-with-even-plusleft-with-even-plus100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
11left-with-odd-plusleft-with-odd-plus100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
12right-with-zeroright-with-zero100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
13right-with-odd-negright-with-odd-neg100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
14right-with-minus-oneright-with-minus-one100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
15right-with-even-negright-with-even-neg100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
16right-with-even-plusright-with-even-plus100.00%-300.00%-200.00%-337.50%1318012335pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
17right-with-odd-plusright-with-odd-plus100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
18and-with-zeroand-with-zero100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
19and-with-two-negand-with-two-neg100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
20and-with-two-plusand-with-two-plus100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
21and-with-one-neg-one-plusand-with-one-neg-one-plus100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
22or-with-zeroor-with-zero100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
23or-with-two-negor-with-two-neg100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
24or-with-two-plusor-with-two-plus100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
25or-with-one-neg-one-plusor-with-one-neg-one-plus100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
26xor-with-zeroxor-with-zero100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
27xor-with-two-negxor-with-two-neg100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
28xor-with-two-plusxor-with-two-plus100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
29xor-with-one-neg-one-plusxor-with-one-neg-one-plus100.00%-450.00%-200.00%-450.00%1216011333pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
30not-with-zeronot-with-zero100.00%-600.00%-100.00%-360.00%111507223pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
31not-with-negnot-with-neg100.00%-600.00%-100.00%-360.00%111507223pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
32not-with-plusnot-with-plus100.00%-600.00%-100.00%-360.00%111507223pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
33conjunction-of-bytesconjunction-of-bytes100.00%80.00%75.00%76.92%154130113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
34convertible-to-boolconvertible-to-bool100.00%66.67%66.67%70.00%133100113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
35concatenation-of-bytesconcatenation-of-bytes100.00%80.00%75.00%76.92%154130113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
36concat-bools-as-bytesconcat-bools-as-bytes100.00%66.67%50.00%80.00%132150113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
37concat-with-emptyconcat-with-empty100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
38concat-empty-withconcat-empty-with100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
39concat-emptyconcat-empty100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
40concat-stringsconcat-strings100.00%-266.67%-200.00%-287.50%1318011331pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
41xor-worksxor-works100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
42or-neg-bytes-with-leading-zeroesor-neg-bytes-with-leading-zeroes100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
43xor-neg-bytes-with-leading-zeroesxor-neg-bytes-with-leading-zeroes100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
44or-neg-bytes-without-leading-zeroesor-neg-bytes-without-leading-zeroes100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
45or-neg-bytes-with-oneor-neg-bytes-with-one100.00%80.00%75.00%72.73%154110113pipeline/phi-initial/bytes-tests.phiorg.eolangpipeline/phi-normalized/bytes-tests.phiorg.eolang
46i64-greater-truei64-greater-true100.00%-600.00%-100.00%-600.00%111307221pipeline/phi-initial/i64-tests.phiorg.eolangpipeline/phi-normalized/i64-tests.phiorg.eolang
47i64-greater-falsei64-greater-false100.00%-600.00%-100.00%-450.00%111407222pipeline/phi-initial/i64-tests.phiorg.eolangpipeline/phi-normalized/i64-tests.phiorg.eolang
48i64-greater-equali64-greater-equal100.00%-600.00%-100.00%-450.00%111407222pipeline/phi-initial/i64-tests.phiorg.eolangpipeline/phi-normalized/i64-tests.phiorg.eolang
49i64-div-by-i64-onei64-div-by-i64-one0.00%-300.00%-200.00%-300.00%121618324pipeline/phi-initial/i64-tests.phiorg.eolangpipeline/phi-normalized/i64-tests.phiorg.eolang
50i64-div-with-remainderi64-div-with-remainder100.00%-450.00%-200.00%-540.00%1215011332pipeline/phi-initial/i64-tests.phiorg.eolangpipeline/phi-normalized/i64-tests.phiorg.eolang
51ioio50.00%85.71%50.00%83.33%274181123pipeline/phi-initial/io/dead-input-tests.phiorg.eolangpipeline/phi-normalized/io/dead-input-tests.phiorg.eolang
52ioio50.00%50.00%33.33%62.50%22381123pipeline/phi-initial/io/dead-output-tests.phiorg.eolangpipeline/phi-normalized/io/dead-output-tests.phiorg.eolang
53nan-not-eq-numbernan-not-eq-number100.00%0.00%0.00%40.00%11150113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
54nan-not-lt-numbernan-not-lt-number100.00%50.00%0.00%62.50%12180113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
55nan-not-lt-nannan-not-lt-nan100.00%50.00%0.00%72.73%121110113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
56nan-not-lte-numbernan-not-lte-number100.00%50.00%0.00%62.50%12180113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
57nan-not-lte-nannan-not-lte-nan100.00%50.00%0.00%72.73%121110113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
58nan-not-gt-numbernan-not-gt-number100.00%50.00%0.00%62.50%12180113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
59nan-not-gt-nannan-not-gt-nan100.00%50.00%0.00%72.73%121110113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
60nan-not-gte-numbernan-not-gte-number100.00%50.00%0.00%62.50%12180113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
61nan-not-gte-nannan-not-gte-nan100.00%50.00%0.00%72.73%121110113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
62nan-times-number-is-nannan-times-number-is-nan100.00%50.00%0.00%70.00%121100113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
63nan-times-nan-is-nannan-times-nan-is-nan100.00%50.00%0.00%76.92%121130113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
64nan-div-number-is-nannan-div-number-is-nan100.00%50.00%0.00%70.00%121100113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
65nan-div-nan-is-nannan-div-nan-is-nan100.00%50.00%0.00%76.92%121130113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
66nan-plus-number-is-nannan-plus-number-is-nan100.00%50.00%0.00%70.00%121100113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
67nan-plus-nan-is-nannan-plus-nan-is-nan100.00%50.00%0.00%76.92%121130113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
68nan-minus-number-is-nannan-minus-number-is-nan100.00%50.00%0.00%70.00%121100113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
69nan-minus-nan-is-nannan-minus-nan-is-nan100.00%50.00%0.00%76.92%121130113pipeline/phi-initial/nan-tests.phiorg.eolangpipeline/phi-normalized/nan-tests.phiorg.eolang
70throws-on-taking-length-of-incomplete-4-byte-characterthrows-on-taking-length-of-incomplete-4-byte-character100.00%N/A0.00%-400.00%101203110pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
71compares-two-different-typescompares-two-different-types100.00%-600.00%-100.00%-900.00%111207220pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
72compares-string-with-nancompares-string-with-nan100.00%0.00%0.00%40.00%11150113pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
73compares-string-with-positive-infinitycompares-string-with-positive-infinity100.00%-150.00%0.00%-112.50%121805117pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
74compares-string-with-negative-infinitycompares-string-with-negative-infinity100.00%-300.00%0.00%-180.00%111504114pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
75text-block-one-linetext-block-one-line100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
76compares-two-different-stringscompares-two-different-strings100.00%-600.00%-100.00%-900.00%111207220pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
77supports-escape-sequencessupports-escape-sequences100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
78supports-escape-sequences-in-textsupports-escape-sequences-in-text100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
79preserves-indentation-in-textpreserves-indentation-in-text100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
80compares-two-stringscompares-two-strings100.00%-300.00%-100.00%-360.00%121508223pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
81one-symbol-string-comparesone-symbol-string-compares100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
82supports-escape-sequences-line-breaksupports-escape-sequences-line-break100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
83supports-escape-sequences-unicodesupports-escape-sequences-unicode100.00%-600.00%-100.00%-1800.00%111107219pipeline/phi-initial/string-tests.phiorg.eolangpipeline/phi-normalized/string-tests.phiorg.eolang
84last-while-dataization-object-with-false-conditionlast-while-dataization-object-with-false-condition0.00%-300.00%-66.67%-225.00%323838526pipeline/phi-initial/while-tests.phiorg.eolangpipeline/phi-normalized/while-tests.phiorg.eolang