net-spider-cli-0.1.0.0: test/NetSpider/CLI/SnapshotSpec.hs
module NetSpider.CLI.SnapshotSpec (main,spec) where
import NetSpider.Interval (interval, Extended(..))
import NetSpider.Query
( startsFrom, defQuery, timeInterval,
foundNodePolicy, policyAppend
)
import NetSpider.Timestamp (fromEpochMillisecond)
import qualified Options.Applicative as Opt
import Test.Hspec
import NetSpider.CLI.TestCommon (runP)
import NetSpider.CLI.Snapshot (SnapshotConfig(..), parserSnapshotQuery)
defConfig :: SnapshotConfig Int () () ()
defConfig =
SnapshotConfig
{ nodeIDReader = Opt.auto,
basisSnapshotQuery = (defQuery []) { foundNodePolicy = policyAppend },
startsFromAsArguments = False
}
main :: IO ()
main = hspec spec
spec :: Spec
spec = describe "parserSnapshotQuery" $ do
specify "default" $ do
let (Right got) = runP (parserSnapshotQuery defConfig) []
startsFrom got `shouldBe` []
timeInterval got `shouldBe` interval (NegInf, False) (PosInf, False)
foundNodePolicy got `shouldBe` policyAppend
specify "time-from" $ do
let (Right got) = runP (parserSnapshotQuery defConfig)
["--time-from", "2019-02-19T11:12:00"]
timeInterval got `shouldBe`
interval (Finite $ fromEpochMillisecond 1550574720000, True)
(PosInf, False)
specify "time-to with exclusive" $ do
let (Right got) = runP (parserSnapshotQuery defConfig)
["--time-to", "x2017-12-20T19:22:02"]
timeInterval got `shouldBe`
interval (NegInf, False)
(Finite $ fromEpochMillisecond 1513797722000, False)
specify "both time-from and time-to with inclusive" $ do
let (Right got) = runP (parserSnapshotQuery defConfig)
["-f", "i2018-10-11T14:13:33", "-t", "i2018-10-11T14:13:50.332"]
timeInterval got `shouldBe`
interval (Finite $ fromEpochMillisecond 1539267213000, True)
(Finite $ fromEpochMillisecond 1539267230332, True)
specify "explicit infinity" $ do
let (Right got) = runP (parserSnapshotQuery defConfig)
["--time-from", "-inf", "--time-to", "+inf"]
timeInterval got `shouldBe` interval (NegInf, True) (PosInf, True)
specify "multiple starts-from" $ do
let (Right got) = runP (parserSnapshotQuery defConfig)
["-s", "10", "-s", "12", "-s", "15"]
startsFrom got `shouldBe` [10,12,15]
let argsConfig = defConfig { startsFromAsArguments = True }
specify "startsFromAsArguments" $ do
let (Right got) = runP (parserSnapshotQuery argsConfig)
["143", "200", "473","21"]
startsFrom got `shouldBe` [143, 200, 473, 21]
specify "startsFromAsArguments - -s still enabled" $ do
let (Right got) = runP (parserSnapshotQuery argsConfig)
["90", "-s", "181"]
startsFrom got `shouldBe` [181, 90]