diff --git a/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala b/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala
index 25a88cf..3369e2a 100644
--- a/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala
+++ b/tests/src/test/scala/actionContainers/SwiftActionContainerTests.scala
@@ -95,25 +95,41 @@
         |}
         """.stripMargin)
     */
+
     testEcho(Seq {
         ("swift", """
-        |import Foundation
-        |
-        |extension FileHandle : TextOutputStream {
-        |   public func write(_ string: String) {
-        |       guard let data = string.data(using: .utf8) else { return }
-        |       self.write(data)
-        |   }
-        |}
-        |func main(args: [String: Any]) -> [String: Any] {
-        |     print("hello stdout")
-        |     var standardError = FileHandle.standardError
-        |     print("hello stderr", to: &standardError)
-        |     return args
-        |}
+         | import Foundation
+         |
+         | extension FileHandle : TextOutputStream {
+         |     public func write(_ string: String) {
+         |         guard let data = string.data(using: .utf8) else { return }
+         |         self.write(data)
+         |     }
+         | }
+         |
+         | func main(args: [String: Any]) -> [String: Any] {
+         |     print("hello stdout")
+         |     var standardError = FileHandle.standardError
+         |     print("hello stderr", to: &standardError)
+         |     return args
+         | }
         """.stripMargin)
     })
 
+    testUnicode(Seq {
+        ("swift", """
+         | func main(args: [String: Any]) -> [String: Any] {
+         |     if let str = args["delimiter"] as? String {
+         |         let msg = "\(str) ☃ \(str)"
+         |         print(msg)
+         |         return [ "winter" : msg ]
+         |     } else {
+         |         return [ "error" : "no delimiter" ]
+         |     }
+         | }
+         """.stripMargin.trim)
+    })
+
     testEnv(Seq {
         ("swift", envCode)
     }, enforceEmptyOutputStream)
@@ -122,7 +138,7 @@
         withActionContainer() { c =>
             val code = """
                 | func niam(args: [String: Any]) -> [String: Any] {
-                |   return [ "result": "it works" ]
+                |     return [ "result": "it works" ]
                 | }
                 |""".stripMargin
 
@@ -298,7 +314,7 @@
                 | import AlchemyVision
                 |
                 | func main(args: [String:Any]) -> [String:Any] {
-                |   return ["message": "I compiled and was able to import Watson SDKs"]
+                |     return ["message": "I compiled and was able to import Watson SDKs"]
                 | }
             """.stripMargin
 
