{-|
Module: Test.Postgres.Polygon
Copyright: (c) digitally induced GmbH, 2022
-}
module Test.Postgres.Polygon where
import CorePrelude
import Data.Either
import Test.Hspec
import Test.Postgres.Support
import IHP.Postgres.Point
import IHP.Postgres.Polygon
import Database.PostgreSQL.Simple.ToField
import qualified Data.Attoparsec.ByteString.Char8 as Attoparsec
tests = do
let rawPoint1 = "(100,200)"
let parsedPoint1 = Point { x = 100, y = 200 }
let rawPoint2 = "(300,400)"
let parsedPoint2 = Point { x = 300, y = 400 }
let raw = "(" <> rawPoint1 <> "," <> rawPoint2 <> ")"
let parsed = Polygon { points = [ parsedPoint1, parsedPoint2 ] }
let serialized = Many
[ Plain "polygon'"
, Many
[ Plain "("
, Plain "100.0"
, Plain ","
, Plain "200.0"
, Plain ")"
]
, Plain ","
, Many
[ Plain "("
, Plain "300.0"
, Plain ","
, Plain "400.0"
, Plain ")"
]
, Plain "'"
]
describe "Polygon" do
describe "Parser" do
it "Should Parse" do
Attoparsec.parseOnly parsePolygon raw `shouldBe` Right parsed
describe "Serializer" do
it "Should Serialize" do
serializePolygon parsed `shouldBe` serialized