Index: device/bluetooth/test/README.md |
diff --git a/device/bluetooth/test/README.md b/device/bluetooth/test/README.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..e71787c61705270056b91ef0a1051be0de2b6e33 |
--- /dev/null |
+++ b/device/bluetooth/test/README.md |
@@ -0,0 +1,56 @@ |
+# Testing |
+ |
+Implementation of the Bluetooth component is tested via unittests. Client code |
+uses Mock Bluetooth objects: |
+ |
+## Mojo Testing Interface Implementation |
+See [//public/interfaces/test/README.md](//device/bluetooth/public/interfaces/test/README.md) |
+for details about the interface. The current implementation of this interface |
+creates a fake implementation of the current non-mojo C++ Bluetooth interface. |
+This interface is implemented across files with a "fake_" prefix. |
+*This interface may be removed when a Bluetooth Mojo Service is introduced, if |
+Web Bluetooth remains its only client. Testing code would implement the service |
+as needed for tests.* |
+ |
+## Cross Platform Unit Tests |
+ |
+New feature development uses cross platform unit tests. This reduces test code |
+redundancy and produces consistency across all implementations. |
+ |
+Unit tests operate at the public `device/bluetooth` API layer and the |
+`BluetoothTest` fixture controls fake operating system behavior as close to the |
+platfom as possible. The resulting test coverage spans the cross platform API, |
+common implementation, and platform specific implementation as close to |
+operating system APIs as possible. |
+ |
+`test/bluetooth_test.h` defines the cross platform test fixture |
+`BluetoothTestBase`. Platform implementations provide subclasses, such as |
+`test/bluetooth_test_android.h` and typedef to the name `BluetoothTest`. |
+ |
+[More testing information](https://docs.google.com/document/d/1mBipxn1sJu6jMqP0RQZpkYXC1o601bzLCpCxwTA2yGA/edit?usp=sharing) |
+ |
+## Legacy Platform Specific Unit Tests |
+ |
+Early code (Classic on most platforms, and Low Energy on BlueZ) was tested with |
+platform specific unit tests, e.g. `bluetooth_bluez_unittest.cc` & |
+`bluetooth_adapter_win_unittest.cc`. The BlueZ style has platform specific |
+methods to create fake devices and the public API is used to interact with them. |
+ |
+Maintenance of these earlier implementation featuress should update tests in |
+place. Long term these tests should be [refactored into cross platform |
+tests](https://crbug.com/580403). |
+ |
+ |
+## Mock Bluetooth Objects |
+ |
+`test/mock_bluetooth_*` files provide GoogleMock based fake objects for use in |
+client code. |
+ |
+ |
+## Chrome OS Blueooth Controller Tests |
+ |
+Bluetooth controller system tests generating radio signals are run and managed |
+by the Chrome OS team. See: |
+https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/server/site_tests/ |
+https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/server/cros/bluetooth/ |
+https://chromium.googlesource.com/chromiumos/third_party/autotest/+/master/client/cros/bluetooth/ |