1
1
(ns devtools.tests.format
2
2
(:refer-clojure :exclude [range = > < + str])
3
3
(:require-macros [devtools.utils.macros :refer [range = > < + str]]) ; prefs aware versions
4
- (:require [cljs.test :refer-macros [deftest testing is]]
5
- [devtools.utils.test :refer [js-equals is-header want? is-body has-body? unroll remove-empty-styles]]
4
+ (:require [cljs.test :refer-macros [deftest testing is are ]]
5
+ [devtools.utils.test :refer [js-equals is-header want? is-body has-body? unroll remove-empty-styles pref-str ]]
6
6
[devtools.format :refer [surrogate? header-api-call has-body-api-call body-api-call]]
7
7
[devtools.prefs :refer [default-prefs merge-prefs! set-pref! set-prefs! update-pref! get-prefs pref]]
8
- [devtools.format :as f]))
8
+ [devtools.format :as f]
9
+ [devtools.utils.batteries :as b]))
9
10
10
11
(def REF [" object" {" object" " ##REF##"
11
12
" config" " ##CONFIG##" }])
378
379
" }"
379
380
" ]" ]
380
381
" }"
381
- " ]" ]]))))
382
+ " ]" ]]))))
383
+
384
+ (deftest test-function-formatting
385
+ (testing " cljs-function?"
386
+ (testing " these should NOT be recognized as cljs functions"
387
+ (are [f] (not (f/cljs-function? f))
388
+ b/simplest-fn))
389
+ (testing " these should be recognized as cljs functions"
390
+ (are [f] (f/cljs-function? f)
391
+ b/minimal-fn
392
+ b/cljs-lambda-multi-arity
393
+ b/clsj-fn-with-fancy-name#$%!?
394
+ b/cljs-fn-var
395
+ b/cljs-fn-multi-arity-var
396
+ b/cljs-fn-multi-arity
397
+ b/cljs-fn-with-vec-destructuring
398
+ b/inst-type-ifn0
399
+ b/inst-type-ifn1
400
+ b/inst-type-ifn2
401
+ b/inst-type-ifn2va
402
+ b/inst-type-ifn4va))
403
+ (testing " these should be recognized as cljs functions"
404
+ (set-pref! :disable-cljs-fn-formatting true )
405
+ (are [f] (not (f/cljs-function? f))
406
+ b/minimal-fn
407
+ b/clsj-fn-with-fancy-name#$%!?
408
+ b/cljs-fn-var
409
+ b/cljs-fn-multi-arity-var
410
+ b/cljs-fn-multi-arity
411
+ b/cljs-fn-with-vec-destructuring
412
+ b/inst-type-ifn0
413
+ b/inst-type-ifn1
414
+ b/inst-type-ifn2
415
+ b/inst-type-ifn2va
416
+ b/inst-type-ifn4va)
417
+ (set-prefs! default-prefs )))
418
+ (testing " minimal function formatting"
419
+ (is-header b/minimal-fn
420
+ [" span"
421
+ {" style" :cljs-style }
422
+ [" span" {" style" :header-style }
423
+ REF]]
424
+ (fn [ref]
425
+ (is (surrogate? ref))
426
+ (has-body? ref true )
427
+ (is-header ref
428
+ [" span" {" style" :fn-header-style }
429
+ [" span" {" style" :fn-prefix-style }
430
+ [" span" {" style" :fn-lambda-symbol-style } :fn-lambda-symbol ]]
431
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol :args-close-symbol )]])
432
+ (is-body ref
433
+ [" span" {" style" :body-style }
434
+ [" ol" {" style" :standard-ol-no-margin-style }
435
+ [" li" {" style" :aligned-li-style }
436
+ [" span" {" style" :fn-native-symbol-style } :fn-native-symbol ]
437
+ REF]]]))))
438
+ (testing " cljs-lambda-multi-arity function formatting"
439
+ (is-header b/cljs-lambda-multi-arity
440
+ [" span"
441
+ {" style" :cljs-style }
442
+ [" span" {" style" :header-style }
443
+ REF]]
444
+ (fn [ref]
445
+ (is (surrogate? ref))
446
+ (has-body? ref true )
447
+ (is-header ref
448
+ [" span" {" style" :fn-header-style }
449
+ [" span" {" style" :fn-prefix-style }
450
+ [" span" {" style" :fn-lambda-symbol-style } :fn-lambda-symbol ]]
451
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol :multi-arity-symbol :args-close-symbol )]])
452
+ (is-body ref
453
+ [" span" {" style" :body-style }
454
+ [" ol" {" style" :standard-ol-no-margin-style }
455
+ [" li" {" style" :aligned-li-style }
456
+ [" span" {" style" :fn-multi-arity-args-indent-style }
457
+ [" span" {" style" :fn-prefix-style }
458
+ [" span" {" style" :fn-lambda-symbol-style } :fn-lambda-symbol ]]]
459
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol :args-close-symbol )]]
460
+ [" li" {" style" :aligned-li-style }
461
+ [" span" {" style" :fn-multi-arity-args-indent-style }
462
+ [" span" {" style" :fn-prefix-style }
463
+ [" span" {" style" :fn-lambda-symbol-style } :fn-lambda-symbol ]]]
464
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol " a b" :args-close-symbol )]]
465
+ [" li" {" style" :aligned-li-style }
466
+ [" span" {" style" :fn-multi-arity-args-indent-style }
467
+ [" span" {" style" :fn-prefix-style }
468
+ [" span" {" style" :fn-lambda-symbol-style } :fn-lambda-symbol ]]]
469
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol " c d e f" :args-close-symbol )]]
470
+ [" li" {" style" :aligned-li-style }
471
+ [" span" {" style" :fn-native-symbol-style } :fn-native-symbol ]
472
+ REF]]]))))
473
+ (testing " cljs-fn-multi-arity-var function formatting"
474
+ (is-header b/cljs-fn-multi-arity-var
475
+ [" span"
476
+ {" style" :cljs-style }
477
+ [" span" {" style" :header-style }
478
+ REF]]
479
+ (fn [ref]
480
+ (is (surrogate? ref))
481
+ (has-body? ref true )
482
+ (is-header ref
483
+ [" span" {" style" :fn-header-style }
484
+ [" span" {" style" :fn-prefix-style }
485
+ [" span" {" style" :fn-symbol-style } :fn-symbol ]
486
+ [" span" {" style" :fn-name-style } " cljs-fn-multi-arity-var" ]]
487
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol :multi-arity-symbol :args-close-symbol )]])
488
+ (is-body ref
489
+ [" span" {" style" :body-style }
490
+ [" ol" {" style" :standard-ol-no-margin-style }
491
+ [" li" {" style" :aligned-li-style }
492
+ [" span" {" style" :fn-multi-arity-args-indent-style }
493
+ [" span" {" style" :fn-prefix-style }
494
+ [" span" {" style" :fn-symbol-style } :fn-symbol ]
495
+ [" span" {" style" :fn-name-style } " cljs-fn-multi-arity-var" ]]]
496
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol " a1" :args-close-symbol )]]
497
+ [" li" {" style" :aligned-li-style }
498
+ [" span" {" style" :fn-multi-arity-args-indent-style }
499
+ [" span" {" style" :fn-prefix-style }
500
+ [" span" {" style" :fn-symbol-style } :fn-symbol ]
501
+ [" span" {" style" :fn-name-style } " cljs-fn-multi-arity-var" ]]]
502
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol " a2-1 a2-2" :args-close-symbol )]]
503
+ [" li" {" style" :aligned-li-style }
504
+ [" span" {" style" :fn-multi-arity-args-indent-style }
505
+ [" span" {" style" :fn-prefix-style }
506
+ [" span" {" style" :fn-symbol-style } :fn-symbol ]
507
+ [" span" {" style" :fn-name-style } " cljs-fn-multi-arity-var" ]]]
508
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol " a3-1 a3-2 a3-3 a3-4" :args-close-symbol )]]
509
+ [" li" {" style" :aligned-li-style }
510
+ [" span" {" style" :fn-multi-arity-args-indent-style }
511
+ [" span" {" style" :fn-prefix-style }
512
+ [" span" {" style" :fn-symbol-style } :fn-symbol ]
513
+ [" span" {" style" :fn-name-style } " cljs-fn-multi-arity-var" ]]]
514
+ [" span" {" style" :fn-args-style } (pref-str :args-open-symbol " va1 va2 & rest" :args-close-symbol )]]
515
+ [" li" {" style" :aligned-li-style }
516
+ [" span" {" style" :fn-ns-symbol-style } :fn-ns-symbol ]
517
+ [" span" {" style" :fn-ns-name-style } " devtools.utils.batteries" ]]
518
+ [" li" {" style" :aligned-li-style }
519
+ [" span" {" style" :fn-native-symbol-style } :fn-native-symbol ]
520
+ REF]]])))))
0 commit comments