aboutsummaryrefslogtreecommitdiffstats
path: root/test/pattern/producer.scm
blob: 86de709116d37cabcfdc5782f7d3cbbd15877765 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#| Copyright (c) Peter McGoron 2025
 |
 | Licensed under the Apache License, Version 2.0 (the "License");
 | you may not use this file except in compliance with the License.
 | You may obtain a copy of the License at
 |
 |     http://www.apache.org/licenses/LICENSE-2.0
 |
 | Unless required by applicable law or agreed to in writing, software
 | distributed under the License is distributed on an "AS IS" BASIS,
 | WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | See the License for the specific language governing permissions and
 | limitations under the License.
 |#

(define (test-producers)
  #;(let ((producer
           (compile-producer '()
                             (list (empty-wrap 'x) (empty-wrap '...))
                             (hashmap bound-identifier-comparator
                                      (empty-wrap 'x)
                                      1))))
      (test-equal "produces x = '(5 4 3 2 1)"
                  '(1 2 3 4 5)
                  (producer (hashmap bound-identifier-comparator
                                   (empty-wrap 'x)
                                   '(5 4 3 2 1)))))
  (let ((producer
         (compile-producer '()
                           (list (list (empty-wrap 'x) (empty-wrap '...))
                                 (empty-wrap '...))
                           (hashmap bound-identifier-comparator
                                    (empty-wrap 'x)
                                    2))))
    (test-equal "double ellipsis"
                '((1 2) (3 4) (5 6) (7 8))
                (producer (hashmap bound-identifier-comparator
                                   (empty-wrap 'x)
                                   '((8 7) (6 5) (4 3) (2 1)))))))