wkt-geom-0.0.2: test/Data/WkbGeometryCollectionSpec.hs
{-# LANGUAGE OverloadedStrings #-}
module Data.WkbGeometryCollectionSpec where
import qualified Data.ByteString.Builder as ByteStringBuilder
import qualified Data.ByteString.Lazy as LazyByteString
import qualified Data.Geospatial as Geospatial
import Data.Monoid ((<>))
import qualified Data.Sequence as Sequence
import qualified Data.Wkb as Wkb
import Test.Hspec (Spec, describe, it, shouldBe)
import qualified Data.SpecHelper as SpecHelper
spec :: Spec
spec =
testWkbGeometryCollectionParsing
testWkbGeometryCollectionParsing :: Spec
testWkbGeometryCollectionParsing =
describe "Test wkb geometry collection" $
it "Parse valid wkb geometry collection" $
Wkb.parseByteString exampleWkbGeometryCollection `shouldBe` (Right . Geospatial.Collection $
Sequence.fromList
[ Geospatial.Point $ Geospatial.GeoPoint SpecHelper.point1
, Geospatial.Point $ Geospatial.GeoPoint SpecHelper.point2
, Geospatial.Line $ Geospatial.GeoLine SpecHelper.lineString3
]
)
exampleWkbGeometryCollection :: LazyByteString.ByteString
exampleWkbGeometryCollection =
ByteStringBuilder.toLazyByteString $
ByteStringBuilder.word8 0
<> ByteStringBuilder.int32BE 7
<> ByteStringBuilder.int32BE 3
<> ByteStringBuilder.word8 0
<> ByteStringBuilder.int32BE 1
<> ByteStringBuilder.doubleBE 1
<> ByteStringBuilder.doubleBE 2
<> ByteStringBuilder.word8 0
<> ByteStringBuilder.int32BE 1
<> ByteStringBuilder.doubleBE 3
<> ByteStringBuilder.doubleBE 4
<> ByteStringBuilder.word8 0
<> ByteStringBuilder.int32BE 2
<> ByteStringBuilder.int32BE 3
<> ByteStringBuilder.doubleBE 15
<> ByteStringBuilder.doubleBE 15
<> ByteStringBuilder.doubleBE 20
<> ByteStringBuilder.doubleBE 20
<> ByteStringBuilder.doubleBE 20
<> ByteStringBuilder.doubleBE 20