;; Copyright 2020 the authors. ;; This file is part of Hy, which is free software licensed under the Expat ;; license. See the LICENSE. (defn test-hyphen [] (setv a-b 1) (assert (= a-b 1)) (assert (= a_b 1)) (setv -a-_b- 2) (assert (= -a-_b- 2)) (assert (= -a--b- 2)) (assert (= -a__b- 2)) (setv -_- 3) (assert (= -_- 3)) (assert (= --- 3)) (assert (= ___ 3))) (defn test-underscore-number [] (setv _42 3) (assert (= _42 3)) (assert (!= _42 -42)) (assert (not (in "_hyx_42" (locals))))) (defn test-question-mark [] (setv foo? "nachos") (assert (= foo? "nachos")) (assert (= is_foo "nachos")) (setv ___ab_cd? "tacos") (assert (= ___ab_cd? "tacos")) (assert (= ___is_ab_cd "tacos"))) (defn test-py-forbidden-ascii [] (setv # "no comment") (assert (= # "no comment")) (assert (= hyx_Xnumber_signX "no comment")) (setv $ "dosh") (assert (= $ "dosh")) (assert (= hyx_Xdollar_signX "dosh"))) (defn test-basic-multilingual-plane [] (setv ♥ "love" ⚘ab "flower") (assert (= (+ ⚘ab ♥) "flowerlove")) (assert (= (+ hyx_XflowerXab hyx_Xblack_heart_suitX) "flowerlove")) (setv ⚘-⚘ "doubleflower") (assert (= ⚘-⚘ "doubleflower")) (assert (= hyx_XflowerX_XflowerX "doubleflower")) (setv ⚘? "mystery") (assert (= ⚘? "mystery")) (assert (= hyx_is_XflowerX "mystery"))) (defn test-higher-unicode [] (setv 😂 "emoji") (assert (= 😂 "emoji")) (assert (= hyx_Xface_with_tears_of_joyX "emoji"))) (defn test-nameless-unicode [] (setv  "private use") (assert (=  "private use")) (assert (= hyx_XUe000X "private use"))) (defn test-charname-with-hyphen [] (setv a