Add more partials tests
diff --git a/test/mustache_test.dart b/test/mustache_test.dart
index ef0b9e4..94dae11 100644
--- a/test/mustache_test.dart
+++ b/test/mustache_test.dart
@@ -235,7 +235,17 @@
 	});
 
 	group('Partial tag', () {
-		
+
+	  String _partialTest(Map values, Map sources, String renderTemplate, {bool lenient: false}) {
+	    var templates = new Map<String, Template>();
+	    for (var k in sources.keys) {
+	      templates[k] = parse(sources[k], templateName: k, lenient: lenient);
+	    }
+	    var resolver = (name) => templates[name];
+	    var renderer = new TemplateRenderer(resolver, lenient: lenient);
+	    return renderer.renderString(renderTemplate, values);
+	  }
+	  
 		test('TemplateRenderer', () {
 		  var template = parse('{{>partial}}'); 
 		  var includedTemplate = parse('{{foo}}');
@@ -245,7 +255,60 @@
 		  var output = renderer.renderString('root', {'foo': 'bar'});
 		  expect(output, 'bar');
     });
-        
+		
+    test('basic', () {
+      var output = _partialTest(
+          {'foo': 'bar'},
+          {'root': '{{>partial}}', 'partial': '{{foo}}'},
+          'root');
+      expect(output, 'bar');
+    });
+
+    test('missing partial strict', () {
+      var threw = false;
+      try {
+        _partialTest(
+          {'foo': 'bar'},
+          {'root': '{{>partial}}'},
+          'root',
+          lenient: false);  
+      } catch (e) {
+        expect(e is MustacheFormatException, isTrue);
+        print(e);
+        threw = true;
+      }
+      expect(threw, isTrue);
+    });   
+
+    test('missing partial lenient', () {
+      var output = _partialTest(
+          {'foo': 'bar'},
+          {'root': '{{>partial}}'},
+          'root',
+          lenient: true);
+      expect(output, equals(''));
+    });
+
+    test('context', () {
+      var output = _partialTest(
+          {'text': 'content'},
+          {'root': '"{{>partial}}"',
+            'partial': '*{{text}}*'},
+          'root',
+          lenient: true);
+      expect(output, equals('"*content*"'));
+    });
+
+    test('recursion', () {
+      var output = _partialTest(
+          { 'content': "X", 'nodes': [ { 'content': "Y", 'nodes': [] } ] },
+          {'root': '{{>node}}',
+            'node': '{{content}}<{{#nodes}}{{>node}}{{/nodes}}>'},
+          'root',
+          lenient: true);
+      expect(output, equals('X<Y<>>'));
+    });
+    
 	});
 
 	group('Other', () {