diff --git a/ede.cabal b/ede.cabal
--- a/ede.cabal
+++ b/ede.cabal
@@ -1,5 +1,5 @@
 name:                  ede
-version:               0.2.6
+version:               0.2.7
 synopsis:              Templating language with similar syntax and features to Liquid or Jinja2.
 homepage:              http://github.com/brendanhay/ede
 license:               OtherLicense
@@ -38,7 +38,12 @@
 extra-source-files:
     README.md
 
+data-files:
+      test/resources/*.ede
+    , test/resources/*.golden
+
 source-repository head
+
     type:     git
     location: git://github.com/brendanhay/ede.git
 
diff --git a/test/Main.hs b/test/Main.hs
--- a/test/Main.hs
+++ b/test/Main.hs
@@ -13,6 +13,7 @@
 module Main (main) where
 
 import           Control.Applicative
+import           Control.Monad
 import qualified Data.Aeson              as Aeson
 import           Data.Bifunctor
 import qualified Data.ByteString         as BS
@@ -21,6 +22,7 @@
 import           Data.Maybe
 import qualified Data.Text               as Text
 import qualified Data.Text.Lazy.Encoding as LText
+import           Paths_ede
 import           System.Directory
 import           System.IO.Unsafe
 import           Test.Tasty
@@ -31,7 +33,7 @@
 main = defaultMain . testGroup "ED-E" $ unsafePerformIO tests
 
 resources :: FilePath
-resources = "test/resources/"
+resources = unsafePerformIO getDataDir
 
 include :: Resolver IO
 include = includeFile resources
diff --git a/test/resources/binding.ede b/test/resources/binding.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/binding.ede
@@ -0,0 +1,10 @@
+{}
+---
+{% let x = 123 %}
+  {{ x }}
+
+  {% let y = 321 %}
+    {{ x }} + {{ y }} = {{ x + y }}
+  {% endlet %}
+
+{% endlet %}
diff --git a/test/resources/binding.golden b/test/resources/binding.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/binding.golden
@@ -0,0 +1,4 @@
+  123
+
+    123 + 321 = 444
+
diff --git a/test/resources/boolean-conditions.ede b/test/resources/boolean-conditions.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/boolean-conditions.ede
@@ -0,0 +1,41 @@
+{ "yes": "graugh", "no": false }
+---
+{% if true %}
+true
+{% endif %}
+
+{% if yes %}
+{{ yes }}
+{% endif %}
+
+{% if no %}
+no
+{% endif %}
+
+{% if unknown %}
+unknown
+{% endif %}
+
+{% if no || true %}
+{{ no }} || true
+{% endif %}
+
+{% if yes == "graugh" %}
+yes == "graugh"
+{% endif %}
+
+{% if none1 %}
+none1
+{% elif none2 %}
+none2
+{% elif none3 %}
+none3
+{% else %}
+none!
+{% endif %}
+
+{% if no %}
+no
+{% elif yes %}
+yes!
+{% endif %}
diff --git a/test/resources/boolean-conditions.golden b/test/resources/boolean-conditions.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/boolean-conditions.golden
@@ -0,0 +1,13 @@
+true
+
+graugh
+
+
+
+false || true
+
+yes == "graugh"
+
+none!
+
+yes!
diff --git a/test/resources/boolean-operands.ede b/test/resources/boolean-operands.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/boolean-operands.ede
@@ -0,0 +1,8 @@
+{ "bool": true }
+---
+{{ !bool }}
+{{ !false }}
+{{ bool && false }}
+{{ true && bool }}
+{{ bool || false }}
+{{ false || bool }}
diff --git a/test/resources/boolean-operands.golden b/test/resources/boolean-operands.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/boolean-operands.golden
@@ -0,0 +1,6 @@
+false
+true
+false
+true
+true
+true
diff --git a/test/resources/case.ede b/test/resources/case.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/case.ede
@@ -0,0 +1,17 @@
+{ "var": "BiNGo!" }
+---
+    {% case var %}
+    {% when "other" %}
+      "other"
+    {% when "BiNGo!" %}
+      "BiNGo!"
+    {% when "test" %}
+      "test"
+    {% endcase %}
+
+{% case 2 %}
+{% when 3 %}
+3
+{% else %}
+El fino.
+{% endcase %}
diff --git a/test/resources/case.golden b/test/resources/case.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/case.golden
@@ -0,0 +1,3 @@
+      "BiNGo!"
+
+El fino.
diff --git a/test/resources/comments.ede b/test/resources/comments.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/comments.ede
@@ -0,0 +1,17 @@
+{}
+---
+{# Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium
+   doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore #}
+Hi
+{# veritatis et quasi architecto beatae vitae dicta sunt explicabo. #}
+
+{# Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit,
+sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt.
+Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet,
+consectetur, adipisci velit, sed quia non numquam eius modi tempora
+incidunt ut labore et dolore magnam aliquam quaerat voluptatem.
+
+
+
+#}
+Ho
diff --git a/test/resources/comments.golden b/test/resources/comments.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/comments.golden
@@ -0,0 +1,3 @@
+Hi
+
+Ho
diff --git a/test/resources/defined.ede b/test/resources/defined.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/defined.ede
@@ -0,0 +1,5 @@
+{ "map": { "key": 12.31 } }
+---
+{{ var | defined }}
+{{ map.key | defined }}
+{{ map.var | defined }}
diff --git a/test/resources/defined.golden b/test/resources/defined.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/defined.golden
@@ -0,0 +1,3 @@
+false
+true
+false
diff --git a/test/resources/empty.ede b/test/resources/empty.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/empty.ede
@@ -0,0 +1,2 @@
+{}
+---
diff --git a/test/resources/empty.golden b/test/resources/empty.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/empty.golden
diff --git a/test/resources/include.ede b/test/resources/include.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/include.ede
@@ -0,0 +1,6 @@
+{ "global": "some_thing" }
+---
+{% include "include.child1" %}
+{% include "include.child2" with binding = "123" %}
+
+     include: {% include "include.child3" %}
diff --git a/test/resources/include.golden b/test/resources/include.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/include.golden
@@ -0,0 +1,5 @@
+global: some_thing!
+binding: 123!
+
+     include:  some_thing variable :: !Int  
+
diff --git a/test/resources/list-sorting.ede b/test/resources/list-sorting.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/list-sorting.ede
@@ -0,0 +1,9 @@
+{
+  "single": "Lorem ipsum-Phrase",
+  "alpha": ["a", "b", "c", "d", "e"],
+  "numeric": [1, 2, 3, 4, 5]
+}
+---
+{{ single | reverse }}
+{{ alpha | reverse | show }}
+{{ numeric | reverse | show }}
diff --git a/test/resources/list-sorting.golden b/test/resources/list-sorting.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/list-sorting.golden
@@ -0,0 +1,3 @@
+esarhP-muspi meroL
+["e","d","c","b","a"]
+[5,4,3,2,1]
diff --git a/test/resources/list-subdivision.ede b/test/resources/list-subdivision.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/list-subdivision.ede
@@ -0,0 +1,13 @@
+{
+  "single": "Lorem ipsum-Phrase",
+  "multi": "Navzdory všeobecnému\npřesvědčení\nLorem Ipsum není\nnáhodný text.",
+  "alpha": ["a", "b", "c", "d", "e"],
+  "numeric": [1, 2, 3, 4, 5]
+}
+---
+{{ multi | head }}
+{{ alpha | head }}
+{{ numeric | init | show }}
+{{ alpha | tail | show }}
+{{ alpha | last }}
+{{ single | splitWords | last }}
diff --git a/test/resources/list-subdivision.golden b/test/resources/list-subdivision.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/list-subdivision.golden
@@ -0,0 +1,6 @@
+N
+a
+[1,2,3,4]
+["b","c","d","e"]
+e
+Phrase
diff --git a/test/resources/list-transformation.ede b/test/resources/list-transformation.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/list-transformation.ede
@@ -0,0 +1,11 @@
+{
+  "single": "Lorem ipsum-Phrase",
+  "alpha": ["a", "b", "c", "d", "e"],
+  "numeric": [1, 2, 3, 4, 5]
+}
+---
+{# {{ alpha | zip(numeric) }} #}
+{# [{{ alpha | join(", ") }}] #}
+{# ({{ numeric | map(toOrdinal) | join(", ") }}) #}
+{# {{ numeric | map(toOrdinal) }} #}
+{# {{ numeric | filter(>= 3) }} #}
diff --git a/test/resources/list-transformation.golden b/test/resources/list-transformation.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/list-transformation.golden
diff --git a/test/resources/literals.ede b/test/resources/literals.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/literals.ede
@@ -0,0 +1,3 @@
+{}
+---
+{{ 1 }} piece of {{ "text" }} expected: {{ true }}
diff --git a/test/resources/literals.golden b/test/resources/literals.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/literals.golden
@@ -0,0 +1,1 @@
+1 piece of text expected: true
diff --git a/test/resources/looping.ede b/test/resources/looping.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/looping.ede
@@ -0,0 +1,41 @@
+{
+  "numbers": [1, 2, 3],
+  "strings": ["foo", "bar"],
+  "indexed": [false, true, false, false],
+  "keyed": {
+    "a": 1.0,
+    "b": 2.0,
+    "c": 3.0
+  },
+  "empty": []
+}
+---
+{% for n in numbers %}
+  {{ n.value }}
+{% endfor %}
+
+{% for var in strings %}
+  {{ var.value }}
+{% endfor %}
+
+  {% for var in indexed %}
+  {{ var.index }}:{{ var.value }}
+  {% endfor %}
+
+{% for var in keyed %}
+  {{ var.key }}:{{ var.value }}
+{% endfor %}
+
+{% for var in empty %}
+  Shit!
+{% else %}
+  empty
+{% endfor %}
+
+{% for item in [1,2,3,4,5] %} {{ item.value }}{% endfor %}
+
+{% for item in {"a": true, "b": false} %}
+{{ item.key }} => {{ item.value }}
+{% endfor %}
+
+{% for char in "testicles" %}{{ char.value }}{% endfor %}
diff --git a/test/resources/looping.golden b/test/resources/looping.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/looping.golden
@@ -0,0 +1,24 @@
+  1
+  2
+  3
+
+  foo
+  bar
+
+  1:false
+  2:true
+  3:false
+  4:false
+
+  a:1
+  b:2
+  c:3
+
+  empty
+
+ 1 2 3 4 5
+
+a => true
+b => false
+
+testicles
diff --git a/test/resources/nesting.ede b/test/resources/nesting.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/nesting.ede
@@ -0,0 +1,13 @@
+{
+  "list": [
+    { "key": "value1", "map": { "nest": 1 } },
+    { "key": "value2", "map": { "nest": 2 } }
+  ]
+}
+---
+{% for item in list %}
+  {{ item.value.key }}
+{% if item.value.map %}
+    {{ item.value.map.nest }}
+{% endif %}
+{% endfor %}
diff --git a/test/resources/nesting.golden b/test/resources/nesting.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/nesting.golden
@@ -0,0 +1,4 @@
+  value1
+    1
+  value2
+    2
diff --git a/test/resources/newlines.ede b/test/resources/newlines.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/newlines.ede
@@ -0,0 +1,11 @@
+{ "var": "more" }
+---
+Some text
+
+
+More
+
+{{ var }} and ...
+
+
+
diff --git a/test/resources/newlines.golden b/test/resources/newlines.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/newlines.golden
@@ -0,0 +1,9 @@
+Some text
+
+
+More
+
+more and ...
+
+
+
diff --git a/test/resources/null.ede b/test/resources/null.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/null.ede
@@ -0,0 +1,7 @@
+{ "redacted": null }
+---
+{% if redacted %}
+  Predicate/existence check should be false
+{% endif %}
+
+nothing to {{ redacted }} see here
diff --git a/test/resources/null.golden b/test/resources/null.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/null.golden
@@ -0,0 +1,2 @@
+
+nothing to  see here
diff --git a/test/resources/numbers.ede b/test/resources/numbers.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/numbers.ede
@@ -0,0 +1,11 @@
+{
+  "double": 1.0567,
+  "integral": 492,
+  "positive": 10.0,
+  "negative": -0.05
+}
+---
+{{ double }}
+{{ integral }}
+{{ positive }}
+{{ negative }}
diff --git a/test/resources/numbers.golden b/test/resources/numbers.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/numbers.golden
@@ -0,0 +1,4 @@
+1.0567
+492
+10
+-0.05
diff --git a/test/resources/polymorphic-show.ede b/test/resources/polymorphic-show.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/polymorphic-show.ede
@@ -0,0 +1,17 @@
+{
+  "single": "Lorem ipsum-Phrase",
+  "whitespace": "  A Word  ",
+  "bool": true,
+  "number": 1.0,
+  "alpha": ["a", "b", "c", "d", "e"],
+  "numeric": [1, 2, 3, 4, 5],
+  "object": {"foo": "x", "bar": "y"}
+}
+---
+{{ single | show }}
+{{ whitespace | show }}
+{{ bool | show }}
+{{ number | show }}
+{{ alpha | show }}
+{{ numeric | show }}
+{{ object | show }}
diff --git a/test/resources/polymorphic-show.golden b/test/resources/polymorphic-show.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/polymorphic-show.golden
@@ -0,0 +1,7 @@
+"Lorem ipsum-Phrase"
+"  A Word  "
+true
+1.0
+["a","b","c","d","e"]
+[1,2,3,4,5]
+{"foo":"x","bar":"y"}
diff --git a/test/resources/raw.ede b/test/resources/raw.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/raw.ede
@@ -0,0 +1,10 @@
+{}
+---
+At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium
+voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi
+sint occaecati cupiditate non provident, similique sunt in culpa qui officia.
+{% raw %}
+These are {{{ handlebars }}} and {{ mustache }} or {{ jinja2 }} output tags.
+{% endraw %}
+Deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum
+facilis est et expedita distinctio.
diff --git a/test/resources/raw.golden b/test/resources/raw.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/raw.golden
@@ -0,0 +1,6 @@
+At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium
+voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi
+sint occaecati cupiditate non provident, similique sunt in culpa qui officia.
+These are {{{ handlebars }}} and {{ mustache }} or {{ jinja2 }} output tags.
+Deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum
+facilis est et expedita distinctio.
diff --git a/test/resources/relational-conditions.ede b/test/resources/relational-conditions.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/relational-conditions.ede
@@ -0,0 +1,49 @@
+{ "one": 1, "ten": 10 }
+---
+{% if one %}
+{{ one }}
+{% endif %}
+
+{% if 1 <= 10 %}
+1 <= 10
+{% else %}
+nein. :(
+{% endif %}
+
+{% if 8 <= ten %}
+8 <= {{ ten }}
+{% else %}
+oh lordy nein.
+{% endif %}
+
+{% if one <= 2 %}
+{{ one }} <= 2
+{% else %}
+ack.
+{% endif %}
+
+{% if one == ten %}
+No..
+{% else %}
+{{ one }} != {{ ten }}
+{% endif %}
+
+{% if ten != one %}
+{{ ten }} != {{ one }}
+{% endif %}
+
+{% if ten > one %}
+{{ ten }} > {{ one }}
+{% endif %}
+
+{% if ten >= ten %}
+{{ ten }} >= {{ ten }}
+{% endif %}
+
+{% if one <= one %}
+{{ one }} <= {{ one }}
+{% endif %}
+
+{% if ten == 10 %}
+{{ ten }} == 10
+{% endif %}
diff --git a/test/resources/relational-conditions.golden b/test/resources/relational-conditions.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/relational-conditions.golden
@@ -0,0 +1,19 @@
+1
+
+1 <= 10
+
+8 <= 10
+
+1 <= 2
+
+1 != 10
+
+10 != 1
+
+10 > 1
+
+10 >= 10
+
+1 <= 1
+
+10 == 10
diff --git a/test/resources/sequence-empty.ede b/test/resources/sequence-empty.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/sequence-empty.ede
@@ -0,0 +1,13 @@
+{
+  "alpha": ["a", "b", "c", "d", "e"],
+  "numeric": [1, 2, 3, 4, 5],
+  "object": {"foo": "x", "bar": "y"},
+  "nothing": []
+}
+---
+{{ "" | empty }}
+{{ "supercalifragilistic" | empty }}
+{{ alpha | empty }}
+{{ numeric | empty }}
+{{ object | empty }}
+{{ nothing | empty }}
diff --git a/test/resources/sequence-empty.golden b/test/resources/sequence-empty.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/sequence-empty.golden
@@ -0,0 +1,6 @@
+true
+false
+false
+false
+false
+true
diff --git a/test/resources/sequence-length.ede b/test/resources/sequence-length.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/sequence-length.ede
@@ -0,0 +1,11 @@
+{
+  "alpha": ["a", "b", "c", "d", "e"],
+  "numeric": [1, 2, 3, 4, 5],
+  "object": {"foo": "x", "bar": "y"}
+}
+---
+{{ "" | length }}
+{{ "123" | length }}
+{{ alpha | length }}
+{{ numeric | length }}
+{{ object | length }}
diff --git a/test/resources/sequence-length.golden b/test/resources/sequence-length.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/sequence-length.golden
@@ -0,0 +1,5 @@
+0
+3
+5
+5
+2
diff --git a/test/resources/single-line.ede b/test/resources/single-line.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/single-line.ede
@@ -0,0 +1,11 @@
+{
+  "var": true,
+  "list": [1,2,3,4,5]
+}
+---
+{% if var %}this is a piece of text on a single line{% endif %}
+
+    {% if var %} this is a piece of text on a single line {% endif %}    
+
+  {% for n in list %}{{ n.value }}{% if !n.last %},{% endif %}{% endfor %}
+
diff --git a/test/resources/single-line.golden b/test/resources/single-line.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/single-line.golden
@@ -0,0 +1,6 @@
+this is a piece of text on a single line
+
+     this is a piece of text on a single line     
+
+  1,2,3,4,5
+
diff --git a/test/resources/syntax.ede b/test/resources/syntax.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/syntax.ede
@@ -0,0 +1,12 @@
+{ "var": 12 }
+---
+{! EDE_SYNTAX pragma=("{*", "*}") inline=("#@", "@#") !}
+{* EDE_SYNTAX block=("#[", "]#")  *}
+{! EDE_SYNTAX inline=("{{", "}}") !}
+
+  #@ var @#
+    {{ var }}
+
+  {% for nothing in var %}
+    {{ var }}
+  {% endfor %}
diff --git a/test/resources/syntax.golden b/test/resources/syntax.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/syntax.golden
@@ -0,0 +1,8 @@
+{! EDE_SYNTAX inline=("{{", "}}") !}
+
+  12
+    {{ var }}
+
+  {% for nothing in var %}
+    {{ var }}
+  {% endfor %}
diff --git a/test/resources/text-casing.ede b/test/resources/text-casing.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/text-casing.ede
@@ -0,0 +1,20 @@
+{
+  "single": "Lorem ipsum-Phrase",
+  "number": 1.0
+}
+---
+{{ single | lowerHead }}
+{{ single | upperHead }}
+{{ single | toLower }}
+{{ single | toUpper }}
+{{ single | toTitle }}
+{{ single | toCamel }}
+{{ single | toPascal }}
+{{ single | toSnake }}
+{{ single | toSpinal }}
+{{ single | toTrain }}
+{{ number | toOrdinal }}
+{{ single | toLower | upperHead }}
+{% if (single | toLower) == "lorem ipsum-phrase" %}
+single | lower == "lorem ipsum"
+{% endif %}
diff --git a/test/resources/text-casing.golden b/test/resources/text-casing.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/text-casing.golden
@@ -0,0 +1,13 @@
+lorem ipsum-Phrase
+Lorem ipsum-Phrase
+lorem ipsum-phrase
+LOREM IPSUM-PHRASE
+Lorem Ipsum Phrase
+loremIpsumPhrase
+LoremIpsumPhrase
+lorem_ipsum_phrase
+lorem-ipsum-phrase
+Lorem-Ipsum-Phrase
+1st
+Lorem ipsum-phrase
+single | lower == "lorem ipsum"
diff --git a/test/resources/text-ellipsis.ede b/test/resources/text-ellipsis.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/text-ellipsis.ede
@@ -0,0 +1,10 @@
+{
+  "short": "short-text",
+  "long": "A slightly longer piece of text that would like to be truncated."
+}
+---
+{{ short | toEllipsis(5) }}
+{{ short | toEllipsisWith(2, "0xb") }}
+{{ long | toEllipsis(20) }}
+{{ long | toEllipsisWith(20, " -") }}
+{{ long | toEllipsis(255) }}
diff --git a/test/resources/text-ellipsis.golden b/test/resources/text-ellipsis.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/text-ellipsis.golden
@@ -0,0 +1,5 @@
+short...
+sh0xb
+A slightly longer pi...
+A slightly longer pi -
+A slightly longer piece of text that would like to be truncated.
diff --git a/test/resources/text-indentation.ede b/test/resources/text-indentation.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/text-indentation.ede
@@ -0,0 +1,10 @@
+{
+  "single": "lorem",
+  "pad": 12
+}
+---
+{{ single | justifyLeft(25) }}
+{{ single | justifyRight(15) }}
+{{ single | center(9) }}
+{{ single | justifyLeft(pad) }}
+{{ single | justifyRight(pad) }}
diff --git a/test/resources/text-indentation.golden b/test/resources/text-indentation.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/text-indentation.golden
@@ -0,0 +1,5 @@
+lorem                    
+          lorem
+  lorem  
+lorem       
+       lorem
diff --git a/test/resources/text-substitution.ede b/test/resources/text-substitution.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/text-substitution.ede
@@ -0,0 +1,11 @@
+{ "single": "Lorem ipsum-Phrase" }
+---
+{{ single | takeWord }}
+{{ single | dropWord }}
+{{ single | dropUpper }}
+{{ single | toCamel| dropLower }}
+{{ single | stripPrefix("Lorem ") }}
+{{ single | stripSuffix("Phrase") }}
+{{ single | replace("ipsum-", "Hi! ") }}
+{{ single | remove(" ipsum-") }}
+{{ single | remove("e") }}
diff --git a/test/resources/text-substitution.golden b/test/resources/text-substitution.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/text-substitution.golden
@@ -0,0 +1,9 @@
+Lorem
+ipsum-Phrase
+orem ipsum-Phrase
+IpsumPhrase
+ipsum-Phrase
+Lorem ipsum-
+Hi! 
+LoremPhrase
+Lorm ipsum-Phras
diff --git a/test/resources/text-whitespace.ede b/test/resources/text-whitespace.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/text-whitespace.ede
@@ -0,0 +1,5 @@
+{ "whitespace": "  A Word  " }
+---
+{{ whitespace | strip }}
+{{ whitespace | stripStart }}
+{{ whitespace | stripEnd }}
diff --git a/test/resources/text-whitespace.golden b/test/resources/text-whitespace.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/text-whitespace.golden
@@ -0,0 +1,3 @@
+A Word
+A Word  
+  A Word
diff --git a/test/resources/text.ede b/test/resources/text.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/text.ede
@@ -0,0 +1,3 @@
+{}
+---
+Nothing to see here, move along
diff --git a/test/resources/text.golden b/test/resources/text.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/text.golden
@@ -0,0 +1,1 @@
+Nothing to see here, move along
diff --git a/test/resources/variables.ede b/test/resources/variables.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/variables.ede
@@ -0,0 +1,8 @@
+{ "string": "World", "integer": 1, "double": 3.25000, "bool": false, "map": { "key1": "value1", "key2": { "key3": "value2" } } }
+---
+Hello, {{ string }}!
+
+{{ integer }} + {{ double }} > 5 is {{ bool }}
+
+{{ map.key1 }}
+{{ map.key2.key3 }}
diff --git a/test/resources/variables.golden b/test/resources/variables.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/variables.golden
@@ -0,0 +1,6 @@
+Hello, World!
+
+1 + 3.25 > 5 is false
+
+value1
+value2
diff --git a/test/resources/whitespace.ede b/test/resources/whitespace.ede
new file mode 100644
--- /dev/null
+++ b/test/resources/whitespace.ede
@@ -0,0 +1,15 @@
+{ "var": "test" }
+---
+ 
+   {{ var }}   
+
+      
+   
+
+  
+
+   {% if var %}    
+       {{ var }}  
+   {% endif %} 
+  
+
diff --git a/test/resources/whitespace.golden b/test/resources/whitespace.golden
new file mode 100644
--- /dev/null
+++ b/test/resources/whitespace.golden
@@ -0,0 +1,11 @@
+ 
+   test   
+
+      
+   
+
+  
+
+       test  
+  
+
