THRIFT-3637 Implement compact protocol for dart

This closes #916
diff --git a/test/dart/test_client/bin/main.dart b/test/dart/test_client/bin/main.dart
index 5ad3cde..2f5bb70 100644
--- a/test/dart/test_client/bin/main.dart
+++ b/test/dart/test_client/bin/main.dart
@@ -112,9 +112,13 @@
       });
   parser.addOption('protocol',
       defaultsTo: 'binary',
-      allowed: ['binary', 'json'],
+      allowed: ['binary', 'compact', 'json'],
       help: 'The protocol name',
-      allowedHelp: {'binary': 'TBinaryProtocol', 'json': 'TJsonProtocol'});
+      allowedHelp: {
+        'binary': 'TBinaryProtocol',
+        'compact': 'TCompactProtocol',
+        'json': 'TJsonProtocol'
+      });
   parser.addFlag('verbose', defaultsTo: false);
 
   ArgResults results;
@@ -132,6 +136,8 @@
 TProtocolFactory getProtocolFactory(String protocolType) {
   if (protocolType == 'binary') {
     return new TBinaryProtocolFactory();
+  } else if (protocolType == 'compact') {
+    return new TCompactProtocolFactory();
   } else if (protocolType == 'json') {
     return new TJsonProtocolFactory();
   }
diff --git a/test/tests.json b/test/tests.json
index 04caaa0..12dcd54 100644
--- a/test/tests.json
+++ b/test/tests.json
@@ -406,6 +406,7 @@
       ],
       "protocols": [
         "binary",
+        "compact",
         "json"
       ],
       "command": [