diff --git a/tests/extmod/machine_pulse.py b/tests/extmod/machine_pulse.py
new file mode 100644
index 0000000000000000000000000000000000000000..b6e12643513a086e4ed009d43e2d73b1fdf2179e
--- /dev/null
+++ b/tests/extmod/machine_pulse.py
@@ -0,0 +1,54 @@
+try:
+    import umachine as machine
+except ImportError:
+    import machine
+try:
+    machine.PinBase
+    machine.time_pulse_us
+except AttributeError:
+    print("SKIP")
+    import sys
+    sys.exit()
+
+
+class ConstPin(machine.PinBase):
+
+    def __init__(self, value):
+        self.v = value
+
+    def value(self, v=None):
+        if v is None:
+            return self.v
+        else:
+            self.v = v
+
+
+class TogglePin(machine.PinBase):
+
+    def __init__(self):
+        self.v = 0
+
+    def value(self, v=None):
+        if v is None:
+            self.v = 1 - self.v
+            print("value:", self.v)
+            return self.v
+
+
+p = TogglePin()
+
+t = machine.time_pulse_us(p, 1)
+print(type(t))
+t = machine.time_pulse_us(p, 0)
+print(type(t))
+
+p = ConstPin(0)
+try:
+    machine.time_pulse_us(p, 1, 10)
+except OSError:
+    print("OSError")
+
+try:
+    machine.time_pulse_us(p, 0, 10)
+except OSError:
+    print("OSError")
diff --git a/tests/extmod/machine_pulse.py.exp b/tests/extmod/machine_pulse.py.exp
new file mode 100644
index 0000000000000000000000000000000000000000..f9a47421814a0fda2a8e6a478b09b7f18d4d677a
--- /dev/null
+++ b/tests/extmod/machine_pulse.py.exp
@@ -0,0 +1,9 @@
+value: 1
+value: 0
+<class 'int'>
+value: 1
+value: 0
+value: 1
+<class 'int'>
+OSError
+OSError