Add new test for RTCConfiguration bundlePolicy
diff --git a/webrtc/RTCConfiguration-bundlePolicy.html b/webrtc/RTCConfiguration-bundlePolicy.html
new file mode 100644
index 0000000..e609ce4
--- /dev/null
+++ b/webrtc/RTCConfiguration-bundlePolicy.html
@@ -0,0 +1,128 @@
+<!doctype html>
+<meta charset=utf-8>
+<title>RTCConfiguration bundlePolicy</title>
+<script src="/resources/testharness.js"></script>
+<script src="/resources/testharnessreport.js"></script>
+<script>
+  'use strict';
+
+  // Test is based on the following editor draft:
+  // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
+
+  /*
+    4.3.2.  Interface Definition
+      [Constructor(optional RTCConfiguration configuration)]
+      interface RTCPeerConnection : EventTarget {
+        ...
+        RTCConfiguration                   getConfiguration();
+        void                               setConfiguration(RTCConfiguration configuration);
+      };
+
+    4.2.1.  RTCConfiguration Dictionary
+      dictionary RTCConfiguration {
+        RTCBundlePolicy          bundlePolicy = "balanced";
+        ...
+      };
+
+    4.2.6.  RTCBundlePolicy Enum
+      enum RTCBundlePolicy {
+        "balanced",
+        "max-compat",
+        "max-bundle"
+      };
+   */
+
+  test(() => {
+    const pc = new RTCPeerConnection();
+    assert_equals(pc.getConfiguration().bundlePolicy, 'balanced');
+  }, 'Default bundlePolicy should be balanced');
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: undefined });
+    assert_equals(pc.getConfiguration().bundlePolicy, 'balanced');
+  }, `new RTCPeerConnection({ bundlePolicy: undefined }) should have bundlePolicy balanced`);
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' });
+    assert_equals(pc.getConfiguration().bundlePolicy, 'balanced');
+  }, `new RTCPeerConnection({ bundlePolicy: 'balanced' }) should succeed`);
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' });
+    assert_equals(pc.getConfiguration().bundlePolicy, 'max-compat');
+  }, `new RTCPeerConnection({ bundlePolicy: 'max-compat' }) should succeed`);
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
+    assert_equals(pc.getConfiguration().bundlePolicy, 'max-bundle');
+  }, `new RTCPeerConnection({ bundlePolicy: 'max-bundle' }) should succeed`);
+
+  test(() => {
+    const pc = new RTCPeerConnection();
+    pc.setConfiguration({});
+  }, 'setConfiguration({}) with initial default bundlePolicy balanced should succeed');
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' });
+    pc.setConfiguration({});
+  }, 'setConfiguration({}) with initial bundlePolicy balanced should succeed');
+
+  test(() => {
+    const pc = new RTCPeerConnection();
+    pc.setConfiguration({ bundlePolicy: 'balanced' });
+  }, 'setConfiguration({ bundlePolicy: balanced }) with initial default bundlePolicy balanced should succeed');
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'balanced' });
+    pc.setConfiguration({ bundlePolicy: 'balanced' });
+  }, `setConfiguration({ bundlePolicy: 'balanced' }) with initial bundlePolicy balanced should succeed`);
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'max-compat' });
+    pc.setConfiguration({ bundlePolicy: 'max-compat' });
+  }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-compat should succeed`);
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
+    pc.setConfiguration({ bundlePolicy: 'max-bundle' });
+  }, `setConfiguration({ bundlePolicy: 'max-bundle' }) with initial bundlePolicy max-bundle should succeed`);
+
+  test(() => {
+    assert_throws(new TypeError(), () =>
+      new RTCPeerConnection({ bundlePolicy: null }));
+  }, `new RTCPeerConnection({ bundlePolicy: null }) should throw TypeError`);
+
+  test(() => {
+    assert_throws(new TypeError(), () =>
+      new RTCPeerConnection({ bundlePolicy: 'invalid' }));
+  }, `new RTCPeerConnection({ bundlePolicy: 'invalid' }) should throw TypeError`);
+
+  /*
+    4.3.2.  Interface Definition
+      To set a configuration
+        5.  If configuration.bundlePolicy is set and its value differs from the
+            connection's bundle policy, throw an InvalidModificationError.
+   */
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
+    assert_own_property(pc, 'setConfiguration');
+
+    assert_throws('InvalidModificationError', () =>
+      pc.setConfiguration({ bundlePolicy: 'max-compat' }));
+  }, `setConfiguration({ bundlePolicy: 'max-compat' }) with initial bundlePolicy max-bundle should throw InvalidModificationError`);
+
+  test(() => {
+    const pc = new RTCPeerConnection({ bundlePolicy: 'max-bundle' });
+    assert_own_property(pc, 'setConfiguration');
+
+    // the default value for bundlePolicy is balanced
+    assert_throws('InvalidModificationError', () =>
+      pc.setConfiguration({}));
+  }, `setConfiguration({}) with initial bundlePolicy max-bundle should throw InvalidModificationError`);
+
+  /*
+    Coverage Report
+      Tested    2
+      Total     2
+   */
+</script>
diff --git a/webrtc/RTCPeerConnection-constructor.html b/webrtc/RTCPeerConnection-constructor.html
index 97cc200..d14afaf 100644
--- a/webrtc/RTCPeerConnection-constructor.html
+++ b/webrtc/RTCPeerConnection-constructor.html
@@ -70,14 +70,6 @@
   '{ iceTransports: "invalid" }': false,
   '{ iceTransports: "none" }': false,
 
-  // bundlePolicy
-  '{ bundlePolicy: null }': new TypeError,
-  '{ bundlePolicy: undefined }': false,
-  '{ bundlePolicy: "balanced" }': false,
-  '{ bundlePolicy: "max-compat" }': false,
-  '{ bundlePolicy: "max-bundle" }': false,
-  '{ bundlePolicy: "invalid" }': new TypeError,
-
   // rtcpMuxPolicy
   '{ rtcpMuxPolicy: null }': new TypeError,
   '{ rtcpMuxPolicy: undefined }': false,