+ {/*#if defaultTrue
+
DefaultTrueIncluded
+ #else
+
DefaultTrueExcluded
+ #endif*/}
+ {/*#if defaultFalse
+
DefaultFalseExcluded
+ #else
+
DefaultFalseIncluded
+ #endif*/}
+
I am a paragraph.
+
+ );
\ No newline at end of file
diff --git a/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.othertype b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.othertype
new file mode 100644
index 000000000000..7469a9168633
--- /dev/null
+++ b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.othertype
@@ -0,0 +1,11 @@
+//#if defaultTrue
+ DefaultTrueIncluded
+//#else
+ DefaultTrueExcluded
+//#endif
+
+//#if defaultFalse
+ DefaultFalseExcluded
+//#else
+ DefaultFalseIncluded
+//#endif
\ No newline at end of file
diff --git a/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.ts b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.ts
new file mode 100644
index 000000000000..c99d68b5fc2f
--- /dev/null
+++ b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.ts
@@ -0,0 +1,24 @@
+//#if defaultTrue
+declare class DefaultTrueIncluded { }
+//#else
+declare class DefaultTrueExcluded { }
+//#endif
+
+//-:cnd:noEmit
+//#if defaultTrue
+declare class InsideUnknownDirectiveNoEmit { }
+//#endif
+//+:cnd:noEmit
+
+//#if defaultFalse
+declare class DefaultFalseExcluded { }
+//#else
+declare class DefaultFalseIncluded { }
+//#endif
+
+// Without noEmit the following line will be emitted
+//-:cnd
+//#if defaultFalse
+declare class InsideUnknownDirectiveEmit { }
+//#endif
+//+:cnd
\ No newline at end of file
diff --git a/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.vb b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.vb
new file mode 100644
index 000000000000..3ff487c150b3
--- /dev/null
+++ b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.vb
@@ -0,0 +1,32 @@
+Module Module1
+'#If defaultTrue
+ Sub DefaultTrueIncluded()
+ End Sub
+'#Else
+ Sub DefaultTrueExcluded()
+ End Sub
+'#End If
+
+'-:cnd:noEmit
+'#If defaultTrue
+ Sub InsideUnknownDirectiveNoEmit()
+ End Sub
+'#End If
+'+:cnd:noEmit
+
+'#If (defaultFalse)
+ Sub DefaultFalseExcluded()
+ End Sub
+'#Else
+ Sub DefaultFalseIncluded()
+ End Sub
+'#End If
+
+' Without noEmit the following line will be emitted
+'-:cnd
+'#If defaultFalse
+ Sub InsideUnknownDirectiveEmit()
+ End Sub
+'#End If
+'+:cnd
+End Module
\ No newline at end of file
diff --git a/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.xml b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.xml
new file mode 100644
index 000000000000..03974e9837e6
--- /dev/null
+++ b/test/TemplateEngine/Microsoft.TemplateEngine.TestTemplates/test_templates/TemplateConditionalProcessing/Test.xml
@@ -0,0 +1,23 @@
+
+