text-builder-dev 0.3.0.2 → 0.3.1
raw patch · 4 files changed
+64/−5 lines, 4 files
Files
- library/TextBuilderDev.hs +12/−3
- test/Main.hs +10/−1
- test/TextBuilderDev/TastyExtras.hs +39/−0
- text-builder-dev.cabal +3/−1
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,