improve test coverage
diff --git a/test/usage_impl_test.dart b/test/usage_impl_test.dart
index a407731..c71cccd 100644
--- a/test/usage_impl_test.dart
+++ b/test/usage_impl_test.dart
@@ -6,7 +6,8 @@
 
 import 'package:unittest/unittest.dart';
 import 'package:usage/src/usage_impl.dart';
-import 'package:usage/src/usage_impl_io.dart';
+
+import 'src/common.dart';
 
 void defineTests() {
   group('ThrottlingBucket', () {
@@ -24,6 +25,32 @@
     });
   });
 
+  group('AnalyticsImpl', () {
+    test('respects disabled', () {
+      AnalyticsImplMock mock = createMock();
+      mock.optIn = false;
+      mock.sendException('FooBar exception');
+      expect(mock.optIn, false);
+      expect(mock.mockPostHandler.sentValues, isEmpty);
+    });
+
+    test('hasSetOptIn', () {
+      AnalyticsImplMock mock = createMock(setOptIn: false);
+      expect(mock.hasSetOptIn, false);
+      mock.optIn = false;
+      expect(mock.hasSetOptIn, true);
+    });
+
+    test('setSessionValue', () {
+      AnalyticsImplMock mock = createMock();
+      mock.sendScreenView('foo');
+      hasnt(mock.last, 'val');
+      mock.setSessionValue('val', 'ue');
+      mock.sendScreenView('bar');
+      has(mock.last, 'val');
+    });
+  });
+
   group('sanitizeFilePaths', () {
     test('replace file', () {
       expect(sanitizeFilePaths(
@@ -39,19 +66,10 @@
     });
   });
 
-  group('IOPersistentProperties', () {
-    test('add', () {
-      IOPersistentProperties props = new IOPersistentProperties('foo_props');
-      props['foo'] = 'bar';
-      expect(props['foo'], 'bar');
-    });
-
-    test('remove', () {
-      IOPersistentProperties props = new IOPersistentProperties('foo_props');
-      props['foo'] = 'bar';
-      expect(props['foo'], 'bar');
-      props['foo'] = null;
-      expect(props['foo'], null);
+  group('postEncode', () {
+    test('simple', () {
+      Map map = {'foo': 'bar', 'baz': 'qux norf'};
+      expect(postEncode(map), 'foo=bar&baz=qux%20norf');
     });
   });
 }