Skip to content

Commit bc889be

Browse files
committed
Replace and remove the hydra.ext.haskell.operators dependency in serialization tests. Resolves #288
1 parent 1f45ae5 commit bc889be

21 files changed

Lines changed: 318 additions & 101 deletions

File tree

hydra-haskell/src/gen-test/haskell/Hydra/Test/Serialization.hs

Lines changed: 35 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
module Hydra.Test.Serialization where
66

77
import qualified Hydra.Ast as Ast
8-
import qualified Hydra.Ext.Haskell.Operators as Operators
8+
import qualified Hydra.Lib.Math as Math
99
import qualified Hydra.Serialization as Serialization
1010
import qualified Hydra.Testing as Testing
1111
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
@@ -15,6 +15,24 @@ import qualified Data.List as L
1515
import qualified Data.Map as M
1616
import qualified Data.Set as S
1717

18+
arrowOp :: Ast.Op
19+
arrowOp = Serialization.op "->" (Math.negate 1) Ast.AssociativityRight
20+
21+
gtOp :: Ast.Op
22+
gtOp = Serialization.op ">" 4 Ast.AssociativityNone
23+
24+
plusOp :: Ast.Op
25+
plusOp = Serialization.op "+" 6 Ast.AssociativityBoth
26+
27+
multOp :: Ast.Op
28+
multOp = Serialization.op "*" 7 Ast.AssociativityBoth
29+
30+
lambdaOp :: Ast.Op
31+
lambdaOp = Serialization.op "->" (Math.negate 1) Ast.AssociativityRight
32+
33+
caseOp :: Ast.Op
34+
caseOp = Serialization.op "->" 0 Ast.AssociativityNone
35+
1836
-- | Test cases for AST serialization
1937
allTests :: Testing.TestGroup
2038
allTests =
@@ -30,7 +48,7 @@ allTests =
3048
Testing.TestCaseWithMetadata {
3149
Testing.testCaseWithMetadataName = "right-associative operator",
3250
Testing.testCaseWithMetadataCase = (Testing.TestCaseSerialization (Testing.SerializationTestCase {
33-
Testing.serializationTestCaseInput = (Serialization.ifx Operators.arrowOp (Serialization.ifx Operators.arrowOp (Serialization.cst "a") (Serialization.cst "b")) (Serialization.ifx Operators.arrowOp (Serialization.cst "c") (Serialization.cst "d"))),
51+
Testing.serializationTestCaseInput = (Serialization.ifx arrowOp (Serialization.ifx arrowOp (Serialization.cst "a") (Serialization.cst "b")) (Serialization.ifx arrowOp (Serialization.cst "c") (Serialization.cst "d"))),
3452
Testing.serializationTestCaseOutput = "(a -> b) -> c -> d"})),
3553
Testing.testCaseWithMetadataDescription = Nothing,
3654
Testing.testCaseWithMetadataTags = []}]},
@@ -50,9 +68,9 @@ allTests =
5068
Ast.opPrecedence = (Ast.Precedence 0),
5169
Ast.opAssociativity = Ast.AssociativityNone}) (Serialization.spaceSep [
5270
Serialization.cst "case",
53-
(Serialization.ifx Operators.gtOp (Serialization.cst "x") (Serialization.num 42))]) (Serialization.newlineSep [
54-
Serialization.ifx Operators.caseOp (Serialization.cst "False") (Serialization.cst "Big"),
55-
(Serialization.ifx Operators.caseOp (Serialization.cst "True") (Serialization.cst "Small"))])),
71+
(Serialization.ifx gtOp (Serialization.cst "x") (Serialization.num 42))]) (Serialization.newlineSep [
72+
Serialization.ifx caseOp (Serialization.cst "False") (Serialization.cst "Big"),
73+
(Serialization.ifx caseOp (Serialization.cst "True") (Serialization.cst "Small"))])),
5674
Testing.serializationTestCaseOutput = "case x > 42 of\n False -> Big\n True -> Small"})),
5775
Testing.testCaseWithMetadataDescription = Nothing,
5876
Testing.testCaseWithMetadataTags = []},
@@ -67,19 +85,19 @@ allTests =
6785
Ast.opPrecedence = (Ast.Precedence 0),
6886
Ast.opAssociativity = Ast.AssociativityNone}) (Serialization.spaceSep [
6987
Serialization.cst "case",
70-
(Serialization.ifx Operators.gtOp (Serialization.cst "x") (Serialization.num 42))]) (Serialization.newlineSep [
71-
Serialization.ifx Operators.caseOp (Serialization.cst "True") (Serialization.ifx (Ast.Op {
88+
(Serialization.ifx gtOp (Serialization.cst "x") (Serialization.num 42))]) (Serialization.newlineSep [
89+
Serialization.ifx caseOp (Serialization.cst "True") (Serialization.ifx (Ast.Op {
7290
Ast.opSymbol = (Ast.Symbol "of"),
7391
Ast.opPadding = Ast.Padding {
7492
Ast.paddingLeft = Ast.WsSpace,
7593
Ast.paddingRight = (Ast.WsBreakAndIndent " ")},
7694
Ast.opPrecedence = (Ast.Precedence 0),
7795
Ast.opAssociativity = Ast.AssociativityNone}) (Serialization.spaceSep [
7896
Serialization.cst "case",
79-
(Serialization.ifx Operators.gtOp (Serialization.cst "x") (Serialization.num 100))]) (Serialization.newlineSep [
80-
Serialization.ifx Operators.caseOp (Serialization.cst "True") (Serialization.cst "ReallyBig"),
81-
(Serialization.ifx Operators.caseOp (Serialization.cst "False") (Serialization.cst "Big"))])),
82-
(Serialization.ifx Operators.caseOp (Serialization.cst "False") (Serialization.cst "Small"))])),
97+
(Serialization.ifx gtOp (Serialization.cst "x") (Serialization.num 100))]) (Serialization.newlineSep [
98+
Serialization.ifx caseOp (Serialization.cst "True") (Serialization.cst "ReallyBig"),
99+
(Serialization.ifx caseOp (Serialization.cst "False") (Serialization.cst "Big"))])),
100+
(Serialization.ifx caseOp (Serialization.cst "False") (Serialization.cst "Small"))])),
83101
Testing.serializationTestCaseOutput = "case x > 42 of\n True -> case x > 100 of\n True -> ReallyBig\n False -> Big\n False -> Small"})),
84102
Testing.testCaseWithMetadataDescription = Nothing,
85103
Testing.testCaseWithMetadataTags = []}]},
@@ -91,7 +109,7 @@ allTests =
91109
Testing.TestCaseWithMetadata {
92110
Testing.testCaseWithMetadataName = "simple lambda",
93111
Testing.testCaseWithMetadataCase = (Testing.TestCaseSerialization (Testing.SerializationTestCase {
94-
Testing.serializationTestCaseInput = (Serialization.ifx Operators.lambdaOp (Serialization.cst "\\x y") (Serialization.ifx Operators.plusOp (Serialization.cst "x") (Serialization.cst "y"))),
112+
Testing.serializationTestCaseInput = (Serialization.ifx lambdaOp (Serialization.cst "\\x y") (Serialization.ifx plusOp (Serialization.cst "x") (Serialization.cst "y"))),
95113
Testing.serializationTestCaseOutput = "\\x y -> x + y"})),
96114
Testing.testCaseWithMetadataDescription = Nothing,
97115
Testing.testCaseWithMetadataTags = []}]},
@@ -134,7 +152,7 @@ allTests =
134152
Testing.serializationTestCaseInput = (Serialization.bracketList Serialization.inlineStyle [
135153
Serialization.bracketList Serialization.inlineStyle [
136154
Serialization.num 1,
137-
(Serialization.ifx Operators.multOp (Serialization.ifx Operators.plusOp (Serialization.num 2) (Serialization.num 3)) (Serialization.ifx Operators.plusOp (Serialization.num 1) (Serialization.num 10)))],
155+
(Serialization.ifx multOp (Serialization.ifx plusOp (Serialization.num 2) (Serialization.num 3)) (Serialization.ifx plusOp (Serialization.num 1) (Serialization.num 10)))],
138156
(Serialization.num 2)]),
139157
Testing.serializationTestCaseOutput = "[[1, (2 + 3) * (1 + 10)], 2]"})),
140158
Testing.testCaseWithMetadataDescription = Nothing,
@@ -147,28 +165,28 @@ allTests =
147165
Testing.TestCaseWithMetadata {
148166
Testing.testCaseWithMetadataName = "operators with different precedence - no parens needed",
149167
Testing.testCaseWithMetadataCase = (Testing.TestCaseSerialization (Testing.SerializationTestCase {
150-
Testing.serializationTestCaseInput = (Serialization.ifx Operators.plusOp (Serialization.ifx Operators.multOp (Serialization.num 2) (Serialization.num 3)) (Serialization.ifx Operators.multOp (Serialization.num 1) (Serialization.num 10))),
168+
Testing.serializationTestCaseInput = (Serialization.ifx plusOp (Serialization.ifx multOp (Serialization.num 2) (Serialization.num 3)) (Serialization.ifx multOp (Serialization.num 1) (Serialization.num 10))),
151169
Testing.serializationTestCaseOutput = "2 * 3 + 1 * 10"})),
152170
Testing.testCaseWithMetadataDescription = Nothing,
153171
Testing.testCaseWithMetadataTags = []},
154172
Testing.TestCaseWithMetadata {
155173
Testing.testCaseWithMetadataName = "operators with different precedence - parens needed",
156174
Testing.testCaseWithMetadataCase = (Testing.TestCaseSerialization (Testing.SerializationTestCase {
157-
Testing.serializationTestCaseInput = (Serialization.ifx Operators.multOp (Serialization.ifx Operators.plusOp (Serialization.num 2) (Serialization.num 3)) (Serialization.ifx Operators.plusOp (Serialization.num 1) (Serialization.num 10))),
175+
Testing.serializationTestCaseInput = (Serialization.ifx multOp (Serialization.ifx plusOp (Serialization.num 2) (Serialization.num 3)) (Serialization.ifx plusOp (Serialization.num 1) (Serialization.num 10))),
158176
Testing.serializationTestCaseOutput = "(2 + 3) * (1 + 10)"})),
159177
Testing.testCaseWithMetadataDescription = Nothing,
160178
Testing.testCaseWithMetadataTags = []},
161179
Testing.TestCaseWithMetadata {
162180
Testing.testCaseWithMetadataName = "associative operator left nesting",
163181
Testing.testCaseWithMetadataCase = (Testing.TestCaseSerialization (Testing.SerializationTestCase {
164-
Testing.serializationTestCaseInput = (Serialization.ifx Operators.multOp (Serialization.cst "x") (Serialization.ifx Operators.multOp (Serialization.cst "y") (Serialization.cst "z"))),
182+
Testing.serializationTestCaseInput = (Serialization.ifx multOp (Serialization.cst "x") (Serialization.ifx multOp (Serialization.cst "y") (Serialization.cst "z"))),
165183
Testing.serializationTestCaseOutput = "x * y * z"})),
166184
Testing.testCaseWithMetadataDescription = Nothing,
167185
Testing.testCaseWithMetadataTags = []},
168186
Testing.TestCaseWithMetadata {
169187
Testing.testCaseWithMetadataName = "associative operator right nesting",
170188
Testing.testCaseWithMetadataCase = (Testing.TestCaseSerialization (Testing.SerializationTestCase {
171-
Testing.serializationTestCaseInput = (Serialization.ifx Operators.multOp (Serialization.ifx Operators.multOp (Serialization.cst "x") (Serialization.cst "y")) (Serialization.cst "z")),
189+
Testing.serializationTestCaseInput = (Serialization.ifx multOp (Serialization.ifx multOp (Serialization.cst "x") (Serialization.cst "y")) (Serialization.cst "z")),
172190
Testing.serializationTestCaseOutput = "x * y * z"})),
173191
Testing.testCaseWithMetadataDescription = Nothing,
174192
Testing.testCaseWithMetadataTags = []}]}],

0 commit comments

Comments
 (0)