packages feed

literal-flake-input-0.0.4: test/LiteralFlakeInput/Test/Nix.hs

{-# LANGUAGE MultilineStrings #-}
module LiteralFlakeInput.Test.Nix where

import Test.Tasty ( TestTree, testGroup )
import Test.Tasty.HUnit
import LiteralFlakeInput.Prelude
import LiteralFlakeInput.Nix

test_render :: TestTree
test_render =
  testGroup "render"
  [ testGroup "renderEntry"
    [ testCase "nat"
      $ renderEntry "a" "1" @?= "a=1;"
    , testCase "bool"
      $ renderEntry "a" "true" @?= "a=true;"
    , testCase "false"
      $ renderEntry "a" "false" @?= "a=false;"
    , testCase "null"
      $ renderEntry "a" "null" @?= "a=null;"
    , testCase "string"
      $ renderEntry "a" "hello world" @?= "a=\"hello world\";"
    , testCase "esc double quote"
      $ renderEntry "a" "hello \" world" @?= "a=\"hello \\\" world\";"
    , testCase "esc left slash"
      $ renderEntry "a" "hello \\" @?= "a=\"hello \\\\\";"
    , testCase "quoted"
      $ renderEntry "a" "\"hello\"" @?= "a=\"hello\";"
    , testCase "list"
      $ renderEntry "a" "[1 2]" @?= "a=[1 2];"
    , testCase "attr-set"
      $ renderEntry "a" "{x = 1; y = 2}" @?= "a={x = 1; y = 2};"
    , testCase "lambda"
      $ renderEntry "a" "x: x + 1" @?= "a=x: x + 1;"
    , testCase "empty"
      $ renderEntry "a" "" @?= "a=\"\";"
    ]
  , testGroup "renderNixDer"
    [ testCase "empty"
      $ renderNixDer (NixDer []) @?= """{...}:{}"""
    , testCase "one"
      $ renderNixDer (NixDer [("key", "value")]) @?= """{...}:{key="value";}"""
    , testCase "two"
      $ renderNixDer (NixDer [("key", "value"), ("key2", "value2")])
      @?= """{...}:{key="value";key2="value2";}"""
    ]
  ]