hy/tests/native_tests/py36_only_tests.hy

48 lines
1.1 KiB
Hy
Raw Normal View History

2018-01-01 16:38:33 +01:00
;; Copyright 2018 the authors.
2017-12-30 23:31:06 +01:00
;; This file is part of Hy, which is free software licensed under the Expat
;; license. See the LICENSE.
;; Tests where the emitted code relies on Python ≥3.6.
;; conftest.py skips this file when running on Python <3.6.
(import [asyncio [get-event-loop sleep]])
(defn run-coroutine [coro]
"Run a coroutine until its done in the default event loop."""
(.run_until_complete (get-event-loop) (coro)))
2018-06-12 19:57:57 +02:00
(defn test-for-async []
2017-12-30 23:31:06 +01:00
(defn/a numbers []
(for [i [1 2]]
(yield i)))
(run-coroutine
(fn/a []
(setv x 0)
2018-06-12 19:57:57 +02:00
(for [:async a (numbers)]
2017-12-30 23:31:06 +01:00
(setv x (+ x a)))
(assert (= x 3)))))
2018-06-12 19:57:57 +02:00
(defn test-for-async-else []
2017-12-30 23:31:06 +01:00
(defn/a numbers []
(for [i [1 2]]
(yield i)))
(run-coroutine
(fn/a []
(setv x 0)
2018-06-12 19:57:57 +02:00
(for [:async a (numbers)]
2017-12-30 23:31:06 +01:00
(setv x (+ x a))
(else (setv x (+ x 50))))
(assert (= x 53)))))
(defn test-pep-487 []
(defclass QuestBase []
[--init-subclass-- (fn [cls swallow &kwargs kwargs]
(setv cls.swallow swallow))])
(defclass Quest [QuestBase :swallow "african"])
(assert (= (. (Quest) swallow) "african")))