packages feed

text-builder-dev 0.3.0.2 → 0.3.1

raw patch · 4 files changed

+64/−5 lines, 4 files

Files

library/TextBuilderDev.hs view
@@ -23,6 +23,7 @@      -- ** Textual     text,+    lazyText,     string,     asciiByteString,     hexData,@@ -100,7 +101,7 @@ -- Unlike conversion classes from other libs this class is lawful. -- The law is: ----- @fromTextBuilder . toTextBuilder = id@+-- @'fromTextBuilder' . 'toTextBuilder' = 'id'@ -- -- This class does not provide implicit rendering, -- such as from integer to its decimal representation.@@ -110,7 +111,7 @@ -- the inverse conversion. -- In the integer case there is no way to read it -- from a textual form without a possibility of failing--- (e.g., when the input string cannot be parsed as a integer).+-- (e.g., when the input string cannot be parsed as an integer). -- -- If you're looking for such conversion classes, -- this library is not a place for them,@@ -134,7 +135,7 @@   fromTextBuilder = Text.unpack . buildText  instance IsomorphicToTextBuilder TextLazy.Text where-  toTextBuilder = text . TextLazy.toStrict+  toTextBuilder = lazyText   fromTextBuilder = TextLazy.fromStrict . buildText  instance IsomorphicToTextBuilder TextLazyBuilder.Builder where@@ -176,6 +177,9 @@ instance Show TextBuilder where   show = Text.unpack . buildText +instance Eq TextBuilder where+  (==) = on (==) buildText+ -- * Accessors  -- | Get the amount of characters@@ -363,6 +367,11 @@ #else         B.copyI builderArray builderOffset array offset (builderOffset + length) #endif++{-# INLINE lazyText #-}+lazyText :: TextLazy.Text -> TextBuilder+lazyText =+  TextLazy.foldrChunks (mappend . text) mempty  -- | String {-# INLINE string #-}
test/Main.hs view
@@ -4,11 +4,14 @@ import qualified Data.Char as Char import qualified Data.Text as Text import qualified Data.Text.Encoding as Text+import qualified Data.Text.Lazy as TextLazy+import qualified Data.Text.Lazy.Builder as TextLazyBuilder import Test.QuickCheck.Instances import Test.Tasty import Test.Tasty.HUnit import Test.Tasty.QuickCheck hiding ((.&.)) import qualified TextBuilderDev as B+import qualified TextBuilderDev.TastyExtras as Extras import Prelude hiding (choose)  main =@@ -134,7 +137,13 @@           assertEqual "" "10.0000" (B.buildText (B.fixedDouble 4 10))           assertEqual "" "0.9000" (B.buildText (B.fixedDouble 4 0.9)),         testCase "doublePercent" $ do-          assertEqual "" "90.4%" (B.buildText (B.doublePercent 1 0.904))+          assertEqual "" "90.4%" (B.buildText (B.doublePercent 1 0.904)),+        testGroup "IsomorphicToTextBuilder" $+          [ Extras.isomorphismLaws "Text" $ Proxy @Text,+            Extras.isomorphismLaws "Lazy Text" $ Proxy @TextLazy.Text,+            Extras.isomorphismLaws "Lazy Text Builder" $ Proxy @TextLazyBuilder.Builder,+            Extras.isomorphismLaws "String" $ Proxy @String+          ]       ]   where     bigTest = 10000
+ test/TextBuilderDev/TastyExtras.hs view
@@ -0,0 +1,39 @@+module TextBuilderDev.TastyExtras where++import qualified Data.Text as Text+import qualified Data.Text.Lazy.Builder as TextLazyBuilder+import Test.QuickCheck.Instances+import Test.Tasty+import Test.Tasty.HUnit+import Test.Tasty.QuickCheck+import qualified TextBuilderDev as B+import Prelude hiding (choose)++-- *++instance Arbitrary TextLazyBuilder.Builder where+  arbitrary =+    TextLazyBuilder.fromLazyText <$> arbitrary++instance Arbitrary B.TextBuilder where+  arbitrary =+    B.lazyText <$> arbitrary++-- *++isomorphismLaws ::+  (B.IsomorphicToTextBuilder a, Eq a, Show a, Arbitrary a) =>+  String ->+  Proxy a ->+  TestTree+isomorphismLaws subject proxy =+  testGroup subject $+    [ testProperty "fromTextBuilder . toTextBuilder == id" $+        (===)+          <$> B.fromTextBuilder . B.toTextBuilder+          <*> flip asProxyTypeOf proxy,+      testProperty "toTextBuilder . fromTextBuilder == id" $+        (===)+          <$> B.toTextBuilder . flip asProxyTypeOf proxy . B.fromTextBuilder+          <*> id+    ]
text-builder-dev.cabal view
@@ -1,7 +1,7 @@ cabal-version: 3.0  name: text-builder-dev-version: 0.3.0.2+version: 0.3.1 category: Text synopsis: Edge of developments for "text-builder" description:@@ -49,6 +49,8 @@   type: exitcode-stdio-1.0   hs-source-dirs: test   main-is: Main.hs+  other-modules:+    TextBuilderDev.TastyExtras   build-depends:     QuickCheck >=2.13 && <3,     quickcheck-instances >=0.3.22 && <0.4,