packages feed

wkt-geom 0.0.5 → 0.0.6

raw patch · 7 files changed

+103/−12 lines, 7 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Data.Ewkb: toByteString :: EndianType -> GeospatialGeometry -> ByteString
+ Data.Ewkb: toByteString :: EndianType -> SridType -> GeospatialGeometry -> ByteString

Files

CHANGELOG.md view
@@ -1,6 +1,10 @@ # Changelog All notable changes to this project will be documented in this file. +## [0.0.6] - 2019-02-11+### Fixed+- EWKB toByteString was missing SRID [https://github.com/indicatrix/wkt-geom/pull/9].+ ## [0.0.5] - 2019-01-07 ### Added - Add serializers back into ByteString [https://github.com/indicatrix/wkt-geom/issues/7].
src/Data/Ewkb.hs view
@@ -34,7 +34,10 @@ parseHexByteString :: Hex.Hex -> Either String Geospatial.GeospatialGeometry parseHexByteString = Hex.safeConvert parseByteString -toByteString :: Endian.EndianType -> Geospatial.GeospatialGeometry -> LazyByteString.ByteString-toByteString endianType =+-- |+-- Produce the binary representation of EWKB given its EndianType (Little or Big - Intel is Little) and SRID (4326 for example).+toByteString :: Endian.EndianType -> EwkbGeometry.SridType -> Geospatial.GeospatialGeometry -> LazyByteString.ByteString+toByteString endianType sridType =   ByteStringBuilder.toLazyByteString . WkbGeospatial.builderGeospatialGeometry-    EwkbGeometry.builderWkbGeom endianType+    mkBuilder endianType+  where mkBuilder eType gType = EwkbGeometry.builderEwkbGeom eType (EwkbGeometry.EwkbGeom gType sridType)
src/Data/Wkb.hs view
@@ -34,6 +34,8 @@ parseHexByteString :: Hex.Hex -> Either String Geospatial.GeospatialGeometry parseHexByteString = Hex.safeConvert parseByteString +-- |+-- Produce the binary representation of WKB given its EndianType (Little or Big - Intel is Little).  Use EWKB when you know the SRID. toByteString :: Endian.EndianType -> Geospatial.GeospatialGeometry -> LazyByteString.ByteString toByteString endianType =   ByteStringBuilder.toLazyByteString . WkbGeospatial.builderGeospatialGeometry Geometry.builderWkbGeom endianType
+ test/Data/Internal/Ewkb/LineSpec.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE OverloadedStrings #-}++module Data.Internal.Ewkb.LineSpec where++import           Test.Hspec      (Spec, describe)++import qualified Data.SpecHelper as SpecHelper++spec :: Spec+spec = do+  testEwkbLineParsing+  testEwkbMultiLineParsing+++-- Test Wkb Line Parsing++testEwkbLineParsing :: Spec+testEwkbLineParsing =+  describe "Test ewkb line parsing" $+    SpecHelper.testRoundTripEwkbGeometryParsing "line" SpecHelper.genLine+++-- Test Wkb MultiLine Parsing++testEwkbMultiLineParsing :: Spec+testEwkbMultiLineParsing =+  describe "Test ewkb multiline parsing" $+    SpecHelper.testRoundTripEwkbGeometryParsing "multiLine" SpecHelper.genMultiLine
+ test/Data/Internal/Ewkb/PointSpec.hs view
@@ -0,0 +1,28 @@+{-# LANGUAGE OverloadedStrings #-}++module Data.Internal.Ewkb.PointSpec where++import           Test.Hspec      (Spec, describe)++import qualified Data.SpecHelper as SpecHelper++spec :: Spec+spec = do+  testEwkbPointParsing+  testEwkbMultiPointParsing+++-- Test Wkb Point Parsing++testEwkbPointParsing :: Spec+testEwkbPointParsing =+  describe "Test ewkb point parsing" $+    SpecHelper.testRoundTripEwkbGeometryParsing "point" SpecHelper.genPoint+++-- Test Wkb MultiPoint Parsing++testEwkbMultiPointParsing :: Spec+testEwkbMultiPointParsing =+  describe "Test ewkb multipoint parsing" $+    SpecHelper.testRoundTripEwkbGeometryParsing "multipoint" SpecHelper.genMultiPoint
test/Data/SpecHelper.hs view
@@ -4,12 +4,15 @@ import qualified Data.LinearRing             as LinearRing import qualified Data.LineString             as LineString import qualified Data.Sequence               as Sequence+import qualified Data.Word                   as Word import qualified HaskellWorks.Hspec.Hedgehog as HedgehogHspec import           Hedgehog import qualified Hedgehog.Gen                as Gen import qualified Hedgehog.Range              as Range import           Test.Hspec                  (Spec, it) +import qualified Data.Ewkb                   as Ewkb+import qualified Data.Internal.Ewkb.Geometry as EwkbGeometry import qualified Data.Internal.Wkb.Endian    as Endian import qualified Data.Internal.Wkb.Geometry  as Geometry import qualified Data.Wkb                    as Wkb@@ -18,21 +21,35 @@  type GeometryGenerator = Gen Geospatial.GeoPositionWithoutCRS -> Gen Geospatial.GeospatialGeometry -roundTripWkb :: Endian.EndianType -> Geospatial.GeospatialGeometry -> Either String Geospatial.GeospatialGeometry-roundTripWkb endianType = Wkb.parseByteString . Wkb.toByteString endianType- testRoundTripWkbGeometryParsing :: String -> GeometryGenerator -> Spec testRoundTripWkbGeometryParsing name generator =-  mapM_ (testRoundTripWkbGeometryParsing' name generator) coordPointGenerators+  mapM_ (testRoundTripGeometryParsing' roundTripWkb name generator) coordPointGenerators -testRoundTripWkbGeometryParsing' :: String -> GeometryGenerator -> (Geometry.CoordinateType, Gen Geospatial.GeoPositionWithoutCRS) -> Spec-testRoundTripWkbGeometryParsing' name generator (coordType, genCoordPoint) =+testRoundTripEwkbGeometryParsing :: String -> GeometryGenerator -> Spec+testRoundTripEwkbGeometryParsing name generator =+  mapM_ (testRoundTripGeometryParsing' roundTripEwkb name generator) coordPointGenerators++testRoundTripGeometryParsing' :: (Endian.EndianType -> Geospatial.GeospatialGeometry -> PropertyT IO ()) -> String -> GeometryGenerator -> (Geometry.CoordinateType, Gen Geospatial.GeoPositionWithoutCRS) -> Spec+testRoundTripGeometryParsing' f name generator (coordType, genCoordPoint) =   it ("round trips wkb " ++ name ++ ": " ++ show coordType) $     HedgehogHspec.require $ property $ do       geometry <- forAll $ generator genCoordPoint       endianType <- forAll genEndianType-      roundTripWkb endianType geometry === Right geometry+      f endianType geometry +roundTripWkb :: MonadTest m => Endian.EndianType -> Geospatial.GeospatialGeometry -> m ()+roundTripWkb endianType geometry =+  let+    p = Wkb.parseByteString . Wkb.toByteString endianType+  in+    p geometry === Right geometry++roundTripEwkb :: MonadTest m => Endian.EndianType -> Geospatial.GeospatialGeometry -> m ()+roundTripEwkb endianType geometry =+  let+    p = Ewkb.parseByteString . Ewkb.toByteString endianType (EwkbGeometry.Srid (4326 :: Word.Word32))+  in+    p geometry === Right geometry  -- Generators 
wkt-geom.cabal view
@@ -1,5 +1,5 @@ name:                  wkt-geom-version:               0.0.5+version:               0.0.6 synopsis:              A parser of WKT, WKB and eWKB. description:           Well Known Text (WKT), Well Known Binary (WKB) and the PostgreSQL extension Extended Well Know Binary (eWKB) are vector geometry representations.                      .@@ -8,7 +8,7 @@ homepage:              https://github.com/indicatrix/wkt-geom#readme license:               Apache-2.0 license-file:          LICENSE-author:                Andrew Newmnan, Dominic Endrei+author:                Andrew Newman, Dominic Endrei maintainer:            andrewfnewman@gmail.com copyright:             2017-2019 Wkt-Geom Project category:              Data@@ -17,6 +17,11 @@                      , CHANGELOG.md cabal-version:         >=1.10 +flag error-check+  manual: True+  default: False+  description: Compile with error-checking+ library   hs-source-dirs:      src   exposed-modules:     Data.Ewkb@@ -56,6 +61,8 @@   type:                exitcode-stdio-1.0   hs-source-dirs:      test   other-modules:       Data.Internal.Ewkb.GeometrySpec+                     , Data.Internal.Ewkb.LineSpec+                     , Data.Internal.Ewkb.PointSpec                      , Data.Internal.Wkb.EndianSpec                      , Data.Internal.Wkb.GeometryCollectionSpec                      , Data.Internal.Wkb.GeometrySpec@@ -97,6 +104,8 @@     default-language:   Haskell2010     ghc-options:        -Wall                         -threaded+  if flag(error-check)+    ghc-options:        -Werror                            source-repository head   type:     git