diff options
Diffstat (limited to 'test/Tests')
-rw-r--r-- | test/Tests/Writers/AnnotatedTable.hs (renamed from test/Tests/Writers/Tables.hs) | 130 |
1 files changed, 66 insertions, 64 deletions
diff --git a/test/Tests/Writers/Tables.hs b/test/Tests/Writers/AnnotatedTable.hs index 6dab8f972..7e16cf8e0 100644 --- a/test/Tests/Writers/Tables.hs +++ b/test/Tests/Writers/AnnotatedTable.hs @@ -1,7 +1,7 @@ {-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE OverloadedStrings #-} {- | - Module : Tests.Writers.Tables + Module : Tests.Writers.AnnotatedTable Copyright : 2020 Christian Despres License : GNU GPL, version 2 or above @@ -11,7 +11,7 @@ Tests for the table helper functions. -} -module Tests.Writers.Tables +module Tests.Writers.AnnotatedTable ( tests ) where @@ -37,19 +37,20 @@ import Test.Tasty.QuickCheck ( QuickCheckTests(..) ) import Text.Pandoc.Arbitrary ( ) import Text.Pandoc.Builder -import Text.Pandoc.Writers.Tables +import qualified Text.Pandoc.Writers.AnnotatedTable + as Ann tests :: [TestTree] -tests = [testGroup "toAnnTable" $ testAnnTable <> annTableProps] +tests = [testGroup "toTable" $ testAnnTable <> annTableProps] -getSpec :: AnnCell -> [ColSpec] -getSpec (AnnCell colspec _ _) = F.toList colspec +getSpec :: Ann.Cell -> [ColSpec] +getSpec (Ann.Cell colspec _ _) = F.toList colspec -catHeaderSpec :: AnnHeaderRow -> [ColSpec] -catHeaderSpec (AnnHeaderRow _ _ x) = concatMap getSpec x +catHeaderSpec :: Ann.HeaderRow -> [ColSpec] +catHeaderSpec (Ann.HeaderRow _ _ x) = concatMap getSpec x -catBodySpec :: AnnBodyRow -> [ColSpec] -catBodySpec (AnnBodyRow _ _ x y) = concatMap getSpec x <> concatMap getSpec y +catBodySpec :: Ann.BodyRow -> [ColSpec] +catBodySpec (Ann.BodyRow _ _ x y) = concatMap getSpec x <> concatMap getSpec y -- Test if the first list can be obtained from the second by deleting -- elements from it. @@ -78,21 +79,21 @@ testAnnTable = [[], [cl "e" 5 1, cl "f" (-7) 0]] [[cl "g" 4 3, cl "h" 4 3], [], [emptyCell]] initialTB2 = tb 2 [] [[cl "i" 4 3, cl "j" 4 3]] - generated = toAnnTable nullAttr - emptyCaption - spec - (th initialHeads) - [initialTB1, initialTB2] - (tf initialHeads) + generated = Ann.toTable nullAttr + emptyCaption + spec + (th initialHeads) + [initialTB1, initialTB2] + (tf initialHeads) acl al n a h w = - AnnCell (NonEmpty.fromList al) n $ Cell (a, [], []) AlignDefault h w [] + Ann.Cell (NonEmpty.fromList al) n $ Cell (a, [], []) AlignDefault h w [] emptyAnnCell al n = acl al n "" 1 1 - ahrw = AnnHeaderRow nullAttr - abrw = AnnBodyRow nullAttr - ath = AnnTableHead nullAttr - atb = AnnTableBody nullAttr - atf = AnnTableFoot nullAttr + ahrw = Ann.HeaderRow nullAttr + abrw = Ann.BodyRow nullAttr + ath = Ann.TableHead nullAttr + atb = Ann.TableBody nullAttr + atf = Ann.TableFoot nullAttr finalTH = ath [ ahrw 0 [acl [spec1] 0 "a" 1 1, acl [spec2, spec3] 1 "b" 2 2] @@ -118,7 +119,7 @@ testAnnTable = , ahrw 9 [acl [spec1] 0 "c" 1 1] ] expected = - AnnTable nullAttr emptyCaption spec finalTH [finalTB1, finalTB2] finalTF + Ann.Table nullAttr emptyCaption spec finalTH [finalTB1, finalTB2] finalTF withColSpec :: Testable prop => ([ColSpec] -> prop) -> Property withColSpec = forAll arbColSpec @@ -134,49 +135,48 @@ withColSpec = forAll arbColSpec annTableProps :: [TestTree] annTableProps = localOption (QuickCheckTests 50) - <$> [ testProperty "normalizes like the table builder" propBuilderAnnTable - , testProperty "has valid final cell columns" propColNumber - , testProperty "has valid first row column data" propFirstRowCols - , testProperty "has valid all row column data" propColSubsets - , testProperty "has valid cell column data lengths" - propCellColLengths + <$> [ testProperty "normalizes like the table builder" propBuilderAnnTable + , testProperty "has valid final cell columns" propColNumber + , testProperty "has valid first row column data" propFirstRowCols + , testProperty "has valid all row column data" propColSubsets + , testProperty "has valid cell column data lengths" propCellColLengths ] --- The property that toAnnTable will normalize a table identically to --- the table builder. This should mean that toAnnTable is at least as +-- The property that Ann.toTable will normalize a table identically to +-- the table builder. This should mean that Ann.toTable is at least as -- rigorous as Builder.table in that respect without repeating those -- tests here (see the pandoc-types Table tests for examples). propBuilderAnnTable :: TableHead -> [TableBody] -> TableFoot -> Property propBuilderAnnTable th tbs tf = withColSpec $ \cs -> convertTable (table emptyCaption cs th tbs tf) - === convertAnnTable (toAnnTable nullAttr emptyCaption cs th tbs tf) + === convertAnnTable (Ann.toTable nullAttr emptyCaption cs th tbs tf) where convertTable blks = case toList blks of [Table _ _ colspec a b c] -> Right (colspec, a, b, c) x -> Left x - convertAnnTable x = case fromAnnTable x of + convertAnnTable x = case Ann.fromTable x of (_, _, colspec, a, b, c) -> Right (colspec, a, b, c) --- The property of toAnnTable that if the last cell in the first row +-- The property of Ann.toTable that if the last cell in the first row -- of a table section has ColSpan w and ColNumber n, then w + n is the -- width of the table. propColNumber :: TableHead -> [TableBody] -> TableFoot -> Property propColNumber th tbs tf = withColSpec $ \cs -> let twidth = length cs - AnnTable _ _ _ ath atbs atf = - toAnnTable nullAttr emptyCaption cs th tbs tf + Ann.Table _ _ _ ath atbs atf = + Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ [colNumTH twidth ath] <> (colNumTB twidth <$> atbs) <> [colNumTF twidth atf] where - colNumTH n (AnnTableHead _ rs) = firstly (isHeaderValid n) rs - colNumTB n (AnnTableBody _ _ rs ts) = + colNumTH n (Ann.TableHead _ rs) = firstly (isHeaderValid n) rs + colNumTB n (Ann.TableBody _ _ rs ts) = firstly (isHeaderValid n) rs && firstly (isBodyValid n) ts - colNumTF n (AnnTableFoot _ rs) = firstly (isHeaderValid n) rs + colNumTF n (Ann.TableFoot _ rs) = firstly (isHeaderValid n) rs - isHeaderValid n (AnnHeaderRow _ _ x) = isSegmentValid n x - isBodyValid n (AnnBodyRow _ _ _ x) = isSegmentValid n x + isHeaderValid n (Ann.HeaderRow _ _ x) = isSegmentValid n x + isBodyValid n (Ann.BodyRow _ _ _ x) = isSegmentValid n x firstly f (x : _) = f x firstly _ [] = True @@ -184,17 +184,19 @@ propColNumber th tbs tf = withColSpec $ \cs -> lastly f (_ : xs) = lastly f xs lastly _ [] = True - isSegmentValid twidth cs = flip lastly cs - $ \(AnnCell _ (ColNumber n) (Cell _ _ _ (ColSpan w) _)) -> n + w == twidth + isSegmentValid twidth cs = + flip lastly cs + $ \(Ann.Cell _ (Ann.ColNumber n) (Cell _ _ _ (ColSpan w) _)) -> + n + w == twidth --- The property of an AnnTable from toAnnTable that if the NonEmpty +-- The property of an Ann.Table from Ann.toTable that if the NonEmpty -- ColSpec data of the cells in the first row of a table section are -- concatenated, the result should equal the [ColSpec] of the entire -- table. propFirstRowCols :: TableHead -> [TableBody] -> TableFoot -> Property propFirstRowCols th tbs tf = withColSpec $ \cs -> - let AnnTable _ _ _ ath atbs atf = - toAnnTable nullAttr emptyCaption cs th tbs tf + let Ann.Table _ _ _ ath atbs atf = + Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ [firstRowTH cs ath] <> (firstRowTB cs <$> atbs) @@ -206,47 +208,47 @@ propFirstRowCols th tbs tf = withColSpec $ \cs -> firstHeaderValid cs = firstly $ \r -> cs == catHeaderSpec r firstBodyValid cs = firstly $ \r -> cs == catBodySpec r - firstRowTH cs (AnnTableHead _ rs) = firstHeaderValid cs rs - firstRowTB cs (AnnTableBody _ _ rs ts) = + firstRowTH cs (Ann.TableHead _ rs) = firstHeaderValid cs rs + firstRowTB cs (Ann.TableBody _ _ rs ts) = firstHeaderValid cs rs && firstBodyValid cs ts - firstRowTF cs (AnnTableFoot _ rs) = firstHeaderValid cs rs + firstRowTF cs (Ann.TableFoot _ rs) = firstHeaderValid cs rs --- The property that in any row in an AnnTable from toAnnTable, the +-- The property that in any row in an Ann.Table from Ann.toTable, the -- NonEmpty ColSpec annotations on cells, when concatenated, form a -- subset (really sublist) of the [ColSpec] of the entire table. propColSubsets :: TableHead -> [TableBody] -> TableFoot -> Property propColSubsets th tbs tf = withColSpec $ \cs -> - let AnnTable _ _ _ ath atbs atf = - toAnnTable nullAttr emptyCaption cs th tbs tf + let Ann.Table _ _ _ ath atbs atf = + Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ subsetTH cs ath <> concatMap (subsetTB cs) atbs <> subsetTF cs atf where - subsetTH cs (AnnTableHead _ rs) = map (subsetHeader cs) rs - subsetTB cs (AnnTableBody _ _ rs ts) = + subsetTH cs (Ann.TableHead _ rs) = map (subsetHeader cs) rs + subsetTB cs (Ann.TableBody _ _ rs ts) = map (subsetHeader cs) rs <> map (subsetBody cs) ts - subsetTF cs (AnnTableFoot _ rs) = map (subsetHeader cs) rs + subsetTF cs (Ann.TableFoot _ rs) = map (subsetHeader cs) rs subsetHeader cs r = catHeaderSpec r `isSubsetOf` cs subsetBody cs r = catBodySpec r `isSubsetOf` cs --- The property that in any cell in an AnnTable from toAnnTable, the +-- The property that in any cell in an Ann.Table from Ann.toTable, the -- NonEmpty ColSpec annotation on a cell is equal in length to its -- ColSpan. propCellColLengths :: TableHead -> [TableBody] -> TableFoot -> Property propCellColLengths th tbs tf = withColSpec $ \cs -> - let AnnTable _ _ _ ath atbs atf = - toAnnTable nullAttr emptyCaption cs th tbs tf + let Ann.Table _ _ _ ath atbs atf = + Ann.toTable nullAttr emptyCaption cs th tbs tf in conjoin $ cellColTH ath <> concatMap cellColTB atbs <> cellColTF atf where - cellColTH (AnnTableHead _ rs) = concatMap cellColHeader rs - cellColTB (AnnTableBody _ _ rs ts) = + cellColTH (Ann.TableHead _ rs) = concatMap cellColHeader rs + cellColTB (Ann.TableBody _ _ rs ts) = concatMap cellColHeader rs <> concatMap cellColBody ts - cellColTF (AnnTableFoot _ rs) = concatMap cellColHeader rs + cellColTF (Ann.TableFoot _ rs) = concatMap cellColHeader rs - cellColHeader (AnnHeaderRow _ _ x) = fmap validLength x - cellColBody (AnnBodyRow _ _ x y) = fmap validLength x <> fmap validLength y + cellColHeader (Ann.HeaderRow _ _ x) = fmap validLength x + cellColBody (Ann.BodyRow _ _ x y) = fmap validLength x <> fmap validLength y - validLength (AnnCell colspec _ (Cell _ _ _ (ColSpan w) _)) = + validLength (Ann.Cell colspec _ (Cell _ _ _ (ColSpan w) _)) = length colspec == w |