test_ko_0.yaml (38957B)
1 # 2 # <spectrum> ::= 3 # spectrum: 4 # - <spectrum-data> 5 # [ - <spectrum-data> ... ] 6 # 7 # <spectrum-data> ::= 8 # wavelength: REAL in [0, INF) 9 # data: REAL in [0, INF) 10 # 11 12 # missing spectrum definition 13 - sun: { spectrum: } 14 --- 15 # missing wavelength 16 - sun: { spectrum: [{data: 1}] } 17 --- 18 # missing data 19 - sun: { spectrum: [{wavelength: 1}] } 20 --- 21 # 2x wavelength 22 - sun: { spectrum: [{wavelength: 1, wavelength: 1}] } 23 --- 24 # 2x data 25 - sun: { spectrum: [{data: 1, data: 1}] } 26 --- 27 # unknown dummy parameter 28 - sun: { spectrum: [{dummy: 1}] } 29 --- 30 # missing wavelength value 31 - sun: { spectrum: [{wavelength: , data: 1}] } 32 --- 33 # missing data value 34 - sun: { spectrum: [{wavelength: 1, data: }] } 35 --- 36 # wavelength should be a number 37 - sun: { spectrum: [{wavelength: "dummy", data: 1}] } 38 --- 39 # data should be a number 40 - sun: { spectrum: [{wavelength: 1, data: "dummy"}] } 41 --- 42 # 0 invalid 43 - sun: { spectrum: [{wavelength: 0, data: 1}] } 44 --- 45 # -1 invalid 46 - sun: { spectrum: [{wavelength: -1, data: 1}] } 47 --- 48 # -1 invalid 49 - sun: { spectrum: [{wavelength: 1, data: -1}] } 50 --- 51 # invalid non-increasing wavelengths 52 - sun: { spectrum: [{wavelength: 1, data: 1}, {wavelength: 1, data: 2}] } 53 --- 54 55 # 56 # dni: REAL # Direct Normal Irradiance in ]0, INF) 57 # 58 59 # missing dni value 60 - sun: { dni: } 61 --- 62 # dni should be a number 63 - sun: { dni: "dummy" } 64 --- 65 # 0 invalid 66 - sun: { dni: 0 } 67 --- 68 # 2x dni 69 - sun: { dni: 1, dni: 1 } 70 --- 71 72 # 73 # <pillbox> ::= 74 # pillbox: 75 # half_angle: REAL # in ]0, 90] 76 # 77 78 # missing pillbox definition 79 - sun: { pillbox: } 80 --- 81 # missing half_angle value 82 - sun: { pillbox: { half_angle: } } 83 --- 84 # half_angle should be a number 85 - sun: { pillbox: { half_angle: "dummy"} } 86 --- 87 # 0 invalid 88 - sun: { pillbox: { half_angle: 0} } 89 --- 90 # 91 invalid 91 - sun: { pillbox: { half_angle: 91} } 92 --- 93 # 2x half_angle 94 - sun: { pillbox: { half_angle: 1, half_angle: 1} } 95 --- 96 # unknown dummy parameter 97 - sun: { pillbox: { dummy: 1} } 98 --- 99 100 # 101 # <gaussian> ::= 102 # gaussian: 103 # std_dev: REAL # in ]0, INF) 104 # 105 106 # missing gaussian definition 107 - sun: { gaussian: } 108 --- 109 # missing std_dev value 110 - sun: { gaussian: { std_dev: } } 111 --- 112 # std_dev should be a number 113 - sun: { gaussian: { std_dev: "dummy"} } 114 --- 115 # 0 invalid 116 - sun: { gaussian: { std_dev: 0} } 117 --- 118 # 2x std_dev 119 - sun: { gaussian: { std_dev: 1, std_dev: 1} } 120 --- 121 # unknown dummy parameter 122 - sun: { gaussian: { dummy: 1} } 123 --- 124 125 # 126 # <buie> ::= 127 # buie: 128 # csr: REAL # in ]0, 1[ 129 # 130 131 # missing buie definition 132 - sun: { buie: } 133 --- 134 # missing csr value 135 - sun: { buie: { csr: } } 136 --- 137 # csr should be a number 138 - sun: { buie: { csr: "dummy"} } 139 --- 140 # 0 invalid 141 - sun: { buie: { csr: 0} } 142 --- 143 # 1 invalid 144 - sun: { buie: { csr: 1} } 145 --- 146 # 2x csr 147 - sun: { buie: { csr: 0.5, csr: 0.5 } } 148 --- 149 # unknown dummy parameter 150 - sun: { buie: { dummy: 1} } 151 --- 152 153 # 154 # <sun> ::= 155 # sun: 156 # dni: REAL # Direct Normal Irradiance in ]0, INF) 157 # <spectrum> 158 # [ <radial-angular-distribution> ] 159 # 160 # <radial-angular-distribution> ::= 161 # <pillbox> | <gaussian> | <buie> 162 # 163 164 # missing dni 165 - sun: { spectrum: [{wavelength: 1, data: 1}] } 166 --- 167 # unknown dummy parameter 168 - sun: { dummy: 1 } 169 --- 170 # 2x dni 171 - sun: { dni: 1, dni: 1 } 172 --- 173 # 2x spectrum 174 - sun: 175 spectrum: [{wavelength: 1, data: 1}] 176 spectrum: [{wavelength: 1, data: 1}] 177 --- 178 # 2x radial-angular-distribution 179 - sun: 180 pillbox: { half_angle: 1} 181 buie: { csr: 0.5} 182 --- 183 184 # 185 # <mirror> ::= 186 # mirror: 187 # reflectivity: REAL # in [0, 1] 188 # slope_error: REAL # in [0, 1] 189 # [ microfacet: <BECKMANN|PILLBOX> ] 190 # 191 192 # missing mirror definition 193 - material: { mirror: } 194 --- 195 # unknown dummy attribute 196 - material: { mirror: { dummy: 0 } } 197 --- 198 # missing reflectivity parameter 199 - material: { mirror: { slope_error: 0 } } 200 --- 201 # missing slope_error parameter 202 - material: { mirror: { reflectivity: 1 } } 203 --- 204 # slope_error should be a number 205 - material: { mirror: { slope_error: "dummy" } } 206 --- 207 # reflectivity should be a number 208 - material: { mirror: { reflectivity: "dummy" } } 209 --- 210 # -1 invalid 211 - material: { mirror: { reflectivity: -1, slope_error: 0 } } 212 --- 213 # 1.5 invalid 214 - material: { mirror: { reflectivity: 1.5, slope_error: 0 } } 215 --- 216 # -1 invalid 217 - material: { mirror: { reflectivity: 1, slope_error: -1 } } 218 --- 219 # 1.5 invalid 220 - material: { mirror: { reflectivity: 1, slope_error: 1.5 } } 221 --- 222 # 2x reflectivity 223 - material: { mirror: { reflectivity: 1, reflectivity: 1 } } 224 --- 225 # 2x slope_error 226 - material: { mirror: { slope_error: 1, slope_error: 1 } } 227 --- 228 # unknown microfacet 229 - material: { mirror: { slope_error: 1, reflectivity: 1, microfacet: BECKBOX }} 230 --- 231 # 2x microfacet 232 - material: 233 mirror: 234 slope_error: 1 235 reflectivity: 1 236 microfacet: BECKMANN 237 microfacet: PILLBOX 238 239 # 240 # <matte> ::= 241 # matte: 242 # reflectivity: REAL # in [0, 1] 243 # [ normal_map: { path: PATH } ] 244 # 245 246 # missing matte parameters 247 - material: { matte: } 248 --- 249 # unknown dummy attribute 250 - material: { matte: { dummy: 0 } } 251 --- 252 # reflectivity should be a number 253 - material: { matte: { reflectivity: "dummy" } } 254 --- 255 # -1 invalid 256 - material: { matte: { reflectivity: -1 } } 257 --- 258 # 1.5 invalid 259 - material: { matte: { reflectivity: 1.5 } } 260 --- 261 # 2x reflectivity 262 - material: { matte: { reflectivity: 1, reflectivity: 1 } } 263 --- 264 # bad normal map 265 - material: 266 matte: { reflectivity: 1, normal_map: map } 267 --- 268 # bad normal map 269 - material: 270 matte: { reflectivity: 1, normal_map: { path: } } 271 --- 272 # Missing reflectivity 273 - material: 274 matte: { normal_map: { path: test } } 275 --- 276 # 2x normal map 277 - material: 278 matte: 279 reflectivity: 1 280 normal_map: { path: test } 281 normal_map: { path: test2} 282 # 283 # 284 # <thin-dielectric> ::= 285 # thin_dielectric: 286 # thickness: REAL # in [0, INF) 287 # medium_i: <dielectric-medium> 288 # medium_t: <dielectric-medium> 289 # 290 291 # invalid extinction 292 - material: 293 thin_dielectric: 294 thickness: 0 295 medium_i: &m { refractive_index: 1, extinction: -1 } 296 medium_t: *m 297 --- 298 # invalid thickness 299 - material: 300 thin_dielectric: 301 thickness: -0.01 302 medium_i: &m { refractive_index: 1, extinction: 0 } 303 medium_t: *m 304 --- 305 # invalid refractive index 306 - material: 307 thin_dielectric: 308 thickness: 0 309 medium_i: &m { refractive_index: 0, extinction: 0 } 310 medium_t: *m 311 --- 312 # missing thickness 313 - material: 314 thin_dielectric: 315 medium_i: &m { refractive_index: 1, extinction: 0 } 316 medium_t: *m 317 --- 318 319 # 320 # <dielectric> ::= 321 # dielectric: 322 # medium_i: <dielectric-medium> 323 # medium_t: <dielectric-medium> 324 # 325 326 # invalid refractive_index 327 - material: 328 dielectric: 329 medium_i: &m { refractive_index: 0, extinction: 0 } 330 medium_t: *m 331 --- 332 # invalid extinction 333 - material: 334 dielectric: 335 medium_i: &m { refractive_index: 1, extinction: -1 } 336 medium_t: *m 337 --- 338 # missing refractive_index 339 - material: 340 dielectric: 341 medium_i: &m { extinction: 0 } 342 medium_t: *m 343 --- 344 # missing extinction 345 - material: 346 dielectric: 347 medium_i: &m { refractive_index: 1 } 348 medium_t: *m 349 --- 350 # missing medium_i 351 - material: 352 dielectric: 353 medium_t: { refractive_index: 1, extinction: 0 } 354 --- 355 # missing medium_t 356 - material: 357 dielectric: 358 medium_i: { refractive_index: 1, extinction: 0 } 359 --- 360 361 # 362 # front: <material-descriptor> 363 # 364 365 # missing front definition 366 - material: { front: } 367 --- 368 # dummy is not a material 369 - material: { front: "dummy" } 370 --- 371 372 # 373 # back: <material-descriptor> 374 # 375 376 # missing back parameters 377 - material: { back: } 378 --- 379 # dummy is not a material 380 - material: { back: "dummy" } 381 --- 382 383 # 384 # <material> ::= 385 # <material-descriptor> | <double-sided-material> 386 # 387 # <double-sided-material> ::= 388 # front: <material-descriptor> 389 # back: <material-descriptor> 390 # 391 392 # missing material definition 393 - material: 394 --- 395 # unknown dummy parameter 396 - material: { dummy: 123 } 397 --- 398 # missing back 399 - material: { front: { matte: { reflectivity: 0.5 } } } 400 --- 401 # missing front 402 - material: { back: { matte: { reflectivity: 0.5 } } } 403 --- 404 # 2x front 405 - material: 406 front: &mat { matte: { reflectivity: 0.5 } } 407 front: *mat 408 --- 409 # 2x back 410 - material: 411 back: &mat { matte: { reflectivity: 0.5 } } 412 back: *mat 413 --- 414 # 2x description 415 - material: 416 front: &mat { matte: { reflectivity: 0.5 } } 417 back: *mat 418 matte: { reflectivity: 0.5 } 419 --- 420 # 2x description 421 - material: 422 matte: { reflectivity: 0.5 } 423 front: &mat { matte: { reflectivity: 0.5 } } 424 back: *mat 425 --- 426 427 # <polyclip-list> ::= 428 # - <polyclip> 429 # [ - <polyclip> ... ] 430 # 431 # <polyclip> ::= 432 # operation: <AND|SUB> 433 # <contour-descriptor> 434 # 435 # <contour-descriptor> ::= 436 # <vertices-descriptor> 437 # | <circle-descriptor> 438 # 439 # <vertices-descriptor> ::= 440 # vertices: <vertices-list> 441 # 442 # <circle-descriptor> ::= 443 # circle: 444 # radius: REAL # in ]0, INF) 445 # [ center: <real2>. Default 0,0 ] 446 # [ segments: INTEGER # in [3, 4096). Default 64 ] 447 # 448 # 449 # <vertices-list> ::= 450 # - <real2> 451 # - <real2> 452 # - <real2> 453 # [ - <real2> ... ] 454 # 455 456 # missing clipping definition 457 - geometry: 458 - plane: 459 clip: 460 --- 461 # unknown dummy parameter 462 - geometry: 463 - plane: 464 clip: 465 - dummy: 1 466 --- 467 # missing operation name 468 - geometry: 469 - plane: 470 clip: 471 - operation: 472 --- 473 # missing vertices list 474 - geometry: 475 - plane: 476 clip: 477 - vertices: 478 --- 479 # unknown dummy operation 480 - geometry: 481 - plane: 482 clip: 483 - operation: dummy 484 --- 485 # missing contour parameter 486 - geometry: 487 - plane: 488 clip: 489 - operation: AND 490 --- 491 # missing operation parameter 492 - geometry: 493 - plane: 494 clip: 495 - vertices: [ [1, 2], [3, 4], [6, 7] ] 496 --- 497 # vertices list < 3 498 - geometry: 499 - plane: 500 clip: 501 - vertices: [ [1, 2], [3, 4] ] 502 --- 503 # invalid number "dummy" 504 - geometry: 505 - plane: 506 clip: 507 - operation: AND 508 vertices: [ ["dummy", 2], [3, 4], [6, 7] ] 509 --- 510 # vertices should have 2 values 511 - geometry: 512 - plane: 513 clip: 514 - operation: AND 515 vertices: [ [2], [3, 4], [6, 7] ] 516 --- 517 # vertices should have 2 values 518 - geometry: 519 - plane: 520 clip: 521 - operation: AND 522 vertices: [ [0, 1, 2], [3, 4], [6, 7] ] 523 --- 524 # missing circle definition 525 - geometry: 526 - plane: 527 clip: 528 - circle: 529 --- 530 # missing radius value 531 - geometry: 532 - plane: 533 clip: 534 - circle: { radius: } 535 --- 536 # missing center description 537 - geometry: 538 - plane: 539 clip: 540 - circle: { center: } 541 --- 542 # invalid number "dummy" 543 - geometry: 544 - plane: 545 clip: 546 - operation: AND 547 circle: { radius: "dummy" } 548 --- 549 # invalid point "dummy" 550 - geometry: 551 - plane: 552 clip: 553 - operation: AND 554 circle: { center: "dummy" } 555 --- 556 # invalid point 1 557 - geometry: 558 - plane: 559 clip: 560 - operation: AND 561 circle: { center: 1 } 562 --- 563 # invalid number "dummy" 564 - geometry: 565 - plane: 566 clip: 567 - operation: AND 568 circle: { segments: "dummy" } 569 --- 570 # 0 invalid 571 - geometry: 572 - plane: 573 clip: 574 - circle: { radius: 0 } 575 --- 576 # 2 invalid 577 - geometry: 578 - plane: 579 clip: 580 - circle: { segments: 2 } 581 --- 582 # missing radius 583 - geometry: 584 - plane: 585 clip: 586 - circle: { center: [4, -10] } 587 --- 588 # missing radius 589 - geometry: 590 - plane: 591 clip: 592 - circle: { segments: 10 } 593 --- 594 # 2x radius 595 - geometry: 596 - plane: 597 clip: 598 - circle: { radius: 1, radius: 1 } 599 --- 600 # 2x center 601 - geometry: 602 - plane: 603 clip: 604 - circle: { center: [4, -10], center: [4, -10] } 605 --- 606 # 2x segments 607 - geometry: 608 - plane: 609 clip: 610 - circle: { segments: 10, segments: 10 } 611 --- 612 # 2x contour 613 - geometry: 614 - plane: 615 clip: 616 - vertices: [ [1, 2], [3, 4], [6, 7] ] 617 circle: { radius: 1 } 618 --- 619 # 2x operation 620 - geometry: 621 - plane: 622 clip: 623 - operation: AND 624 operation: OR 625 --- 626 627 # 628 # <cuboid> ::= 629 # cuboid: 630 # size: <real3*+> 631 # 632 633 # missing cuboid definition 634 - geometry: [ { cuboid: } ] 635 --- 636 # unknown dummy parameter 637 - geometry: [ { cuboid: { dummy: 1 } } ] 638 --- 639 # missing size values 640 - geometry: [ { cuboid: { size: } } ] 641 --- 642 # size should be a number 643 - geometry: [ { cuboid: { size: "dummy" } } ] 644 --- 645 # invalid number "dummy" 646 - geometry: [ { cuboid: { size: [1, "dummy", 2] } } ] 647 --- 648 # size should have 3 values 649 - geometry: [ { cuboid: { size: [1, 2] } } ] 650 --- 651 # size should have 3 values 652 - geometry: [ { cuboid: { size: [1, 2, 3, 4] } } ] 653 --- 654 # -1 invalid 655 - geometry: [ { cuboid: { size: [-1, 2, 3] } } ] 656 --- 657 # 0 invalid 658 - geometry: [ { cuboid: { size: [0, 2, 3] } } ] 659 --- 660 # 2x size 661 - geometry: [ { cuboid: { size: [1, 2, 3], size: [1, 2, 3] } } ] 662 --- 663 664 # 665 # <cylinder> ::= 666 # cylinder: 667 # height: REAL # in ]0, INF) 668 # radius: REAL # in ]0, INF) 669 # [ slices: INTEGER ] # in [4, 4096]. Default 16 670 # [ stacks: INTEGER ] # in [1, 4096]. Default 1 671 # 672 673 # missing cylinder definition 674 - geometry: [ { cylinder: } ] 675 --- 676 # missing height value 677 - geometry: [ { cylinder: { height: } } ] 678 --- 679 # missing radius value 680 - geometry: [ { cylinder: { radius: } } ] 681 --- 682 # unknown dummy parameter 683 - geometry: [ { cylinder: { dummy: 1 } } ] 684 --- 685 # missing radius 686 - geometry: [ { cylinder: { height: 1 } } ] 687 --- 688 # missing height 689 - geometry: [ { cylinder: { radius: 1 } } ] 690 --- 691 # height should be a number 692 - geometry: [ { cylinder: { height: "dummy" } } ] 693 --- 694 # radius should be a number 695 - geometry: [ { cylinder: { radius: "dummy" } } ] 696 --- 697 # slices should be a number 698 - geometry: [ { cylinder: { slices: "dummy" } } ] 699 --- 700 # stacks 701 - geometry: [ { cylinder: { stacks: "dummy" } } ] 702 --- 703 # -1 invalid 704 - geometry: [ { cylinder: { radius: -1 } } ] 705 --- 706 # -1 invalid 707 - geometry: [ { cylinder: { height: -1 } } ] 708 --- 709 # 0 invalid 710 - geometry: [ { cylinder: { radius: 0 } } ] 711 --- 712 # 0 invalid 713 - geometry: [ { cylinder: { height: 0 } } ] 714 --- 715 # 2x height 716 - geometry: [ { cylinder: { height: 1, height: 1 } } ] 717 --- 718 # 2x radius 719 - geometry: [ { cylinder: { radius: 1, radius: 1 } } ] 720 --- 721 # 2x slices 722 - geometry: [ { cylinder: { slices: 10, slices: 10 } } ] 723 --- 724 # stacks 725 - geometry: [ { cylinder: { stacks: 10, stacks: 10 } } ] 726 --- 727 # 1 invalid 728 - geometry: [ { cylinder: { height: 1, radius: 1, slices: 1 } } ] 729 --- 730 # 4097 invalid 731 - geometry: [ { cylinder: { height: 1, radius: 1, slices: 4097 } } ] 732 --- 733 # 0 invalid 734 - geometry: [ { cylinder: { height: 1, radius: 1, stacks: 0 } } ] 735 --- 736 # 4097 invalid 737 - geometry: [ { cylinder: { height: 1, radius: 1, stacks: 4097 } } ] 738 --- 739 # 12.5 invalid 740 - geometry: [ { cylinder: { height: 1, radius: 1, slices: 12.5 } } ] 741 --- 742 # 12.5 invalid 743 - geometry: [ { cylinder: { height: 1, radius: 1, stacks: 12.5 } } ] 744 --- 745 746 # 747 # <obj> ::= 748 # obj: 749 # path: PATH 750 # 751 752 # missing obj definition 753 - geometry: [ { obj: } ] 754 --- 755 # missing path 756 - geometry: [ { obj: { path: } } ] 757 --- 758 # unknown dummy parameter 759 - geometry: [ { obj: { dummy: 1 } } ] 760 --- 761 # 2x path 762 - geometry: [ { obj: { path: "file", path: "file" } } ] 763 --- 764 765 # 766 # <parabol> ::= 767 # parabol: # x^2 + y^2 - 4*focal*z = 0 768 # focal: REAL # in ]0, INF) 769 # clip: <polyclip-list> 770 # 771 772 # missing parabol definition 773 - geometry: [ { parabol: } ] 774 --- 775 # unknown dummy parameter 776 - geometry: [ { parabol: { dummy: 1 } } ] 777 --- 778 # missing focal value 779 - geometry: [ { parabol: { focal: } } ] 780 --- 781 # missing clip value 782 - geometry: [ { parabol: { clip: } } ] 783 --- 784 # focal should be a number 785 - geometry: [ { parabol: { focal: "dummy" } } ] 786 --- 787 # -1 invalid 788 - geometry: [ { parabol: { focal: -1 } } ] 789 --- 790 # 0 invalid 791 - geometry: [ { parabol: { focal: 0 } } ] 792 --- 793 # missing clip parameter 794 - geometry: [ { parabol: { focal: 10 } } ] 795 --- 796 # missing focal parameter 797 - geometry: 798 - parabol: 799 clip: 800 - operation: AND 801 vertices: [ [1, 2], [3, 4], [6, 7] ] 802 --- 803 # 2x focal 804 - geometry: [ { parabol: { focal: 10, focal: 10 } } ] 805 --- 806 # 2x clip 807 - geometry: 808 - parabol: 809 clip: 810 - operation: AND 811 vertices: [ [1, 2], [3, 4], [6, 7] ] 812 clip: 813 - operation: AND 814 vertices: [ [1, 2], [3, 4], [6, 7] ] 815 --- 816 # invalid slices 817 - geometry: 818 - parabol: 819 slices: 1 820 focal: 1 821 clip: 822 - operation: AND 823 vertices: [ [1, 2], [3, 4], [6, 7] ] 824 --- 825 # invalid slices 826 - geometry: 827 - parabol: 828 slices: 0 829 focal: 1 830 clip: 831 - operation: AND 832 vertices: [ [1, 2], [3, 4], [6, 7] ] 833 --- 834 # invalid slices 835 - geometry: 836 - parabol: 837 slices: 4097 838 focal: 1 839 clip: 840 - operation: AND 841 vertices: [ [1, 2], [3, 4], [6, 7] ] 842 --- 843 844 # 845 # <parabolic-cylinder> ::= 846 # parabolic-cylinder: # y^2 - 4*focal*z = 0 847 # focal: REAL # in ]0, INF) 848 # clip: <polyclip-list> 849 # 850 851 # missing parabolic-cylinder definition 852 - geometry: [ { parabolic-cylinder: } ] 853 --- 854 # unknown dummy parameter 855 - geometry: [ { parabolic-cylinder: { dummy: 1 } } ] 856 --- 857 # missing focal value 858 - geometry: [ { parabolic-cylinder: { focal: } } ] 859 --- 860 # missing clip value 861 - geometry: [ { parabolic-cylinder: { clip: } } ] 862 --- 863 # focal should be a number 864 - geometry: [ { parabolic-cylinder: { focal: "dummy" } } ] 865 --- 866 # -1 invalid 867 - geometry: [ { parabolic-cylinder: { focal: -1 } } ] 868 --- 869 # 0 invalid 870 - geometry: [ { parabolic-cylinder: { focal: 0 } } ] 871 --- 872 # missing clip parameter 873 - geometry: [ { parabolic-cylinder: { focal: 10 } } ] 874 --- 875 # missing focal parameter 876 - geometry: 877 - parabolic-cylinder: 878 clip: 879 - operation: AND 880 vertices: [ [1, 2], [3, 4], [6, 7] ] 881 --- 882 # 2x focal 883 - geometry: [ { parabolic-cylinder: { focal: 10, focal: 10 } } ] 884 --- 885 # 2x clip 886 - geometry: 887 - parabolic-cylinder: 888 clip: 889 - operation: AND 890 vertices: [ [1, 2], [3, 4], [6, 7] ] 891 clip: 892 - operation: AND 893 vertices: [ [1, 2], [3, 4], [6, 7] ] 894 --- 895 896 # 897 # <hyperbol> ::= 898 # hyperbol: # (x^2 + y^2) / a^2 - (z + z0 - 1/2)^2 / b^2 + 1 = 0 899 # # with g = img_focal + real_focal; f = real_focal / g; 900 # # a^2 = g^2(f - f^2); b = g(f - 1/2); z0 = |b| + g/2 901 # focals: <hyperboloid_focals> 902 # clip: <polyclip-list> 903 # 904 # <hyperboloid_focals> ::= 905 # real: REAL # in ]0, INF) 906 # image: REAL # in ]0, INF) 907 # 908 # missing hyperbol definition 909 - geometry: [ { hyperbol: } ] 910 --- 911 # unknown dummy parameter 912 - geometry: [ { hyperbol: { dummy: 1 } } ] 913 --- 914 # missing focals definition 915 - geometry: [ { hyperbol: { focals: } } ] 916 --- 917 # missing real value 918 - geometry: [ { hyperbol: { focals: { real: } } } ] 919 --- 920 # missing image value 921 - geometry: [ { hyperbol: { focals: { image: } } } ] 922 --- 923 # missing clip value 924 - geometry: [ { hyperbol: { clip: } } ] 925 --- 926 # real should be a number 927 - geometry: [ { hyperbol: { focals: { real: "dummy" } } } ] 928 --- 929 # -1 invalid 930 - geometry: [ { hyperbol: { focals: { real: -1 } } } ] 931 --- 932 # 0 invalid 933 - geometry: [ { hyperbol: { focals: { real: 0 } } } ] 934 --- 935 # image should be a number 936 - geometry: [ { hyperbol: { focals: { image: "dummy" } } } ] 937 --- 938 # -1 invalid 939 - geometry: [ { hyperbol: { focals: { image: -1 } } } ] 940 --- 941 # 0 invalid 942 - geometry: [ { hyperbol: { focals: { image: 0 } } } ] 943 --- 944 # missing clip parameter 945 - geometry: [ { hyperbol: { focals: { real: 1, image: 1 } } } ] 946 --- 947 # missing real parameter 948 - geometry: 949 - hyperbol: 950 focals: { image: 1 } 951 clip: 952 - operation: AND 953 vertices: [ [1, 2], [3, 4], [6, 7] ] 954 --- 955 # missing image parameter 956 - geometry: 957 - hyperbol: 958 focals: { real: 10 } 959 clip: 960 - operation: AND 961 vertices: [ [1, 2], [3, 4], [6, 7] ] 962 --- 963 # 2x focals 964 - geometry: 965 - hyperbol: 966 focals: { real: 1, image: 1 } 967 focals: { real: 1, image: 1 } 968 --- 969 # 2x real 970 - geometry: [ { hyperbol: { focals: { real: 1, real: 1 } } } ] 971 --- 972 # 2x image 973 - geometry: [ { hyperbol: { focals: { image: 1, image: 1 } } } ] 974 --- 975 # 2x clip 976 - geometry: 977 - hyperbol: 978 clip: 979 - operation: AND 980 vertices: [ [1, 2], [3, 4], [6, 7] ] 981 clip: 982 - operation: AND 983 vertices: [ [1, 2], [3, 4], [6, 7] ] 984 --- 985 986 # 987 # <plane> ::= 988 # plane: 989 # clip: <polyclip-list> 990 # 991 992 # missing plane definition 993 - geometry: [ { plane: } ] 994 --- 995 # unknown dummy parameter 996 - geometry: [ { plane: { dummy: 1 } } ] 997 --- 998 # 2x clip 999 - geometry: 1000 - plane: 1001 clip: 1002 - operation: AND 1003 vertices: [ [1, 2], [3, 4], [6, 7] ] 1004 clip: 1005 - operation: AND 1006 vertices: [ [1, 2], [3, 4], [6, 7] ] 1007 --- 1008 # invalid slices 1009 - geometry: &target 1010 - plane: 1011 slices: 0 1012 clip: 1013 - operation: AND 1014 vertices: 1015 - [-0.50, -0.50] 1016 - [-0.50, 0.50] 1017 - [0.50, 0.50] 1018 - [0.50, -0.50] 1019 --- 1020 # invalid slices 1021 - geometry: &target 1022 - plane: 1023 slices: 4097 1024 clip: 1025 - operation: AND 1026 vertices: 1027 - [-0.50, -0.50] 1028 - [-0.50, 0.50] 1029 - [0.50, 0.50] 1030 - [0.50, -0.50] 1031 1032 --- 1033 # 1034 # <sphere> ::= 1035 # sphere: 1036 # radius: REAL # in ]0, INF) 1037 # [ slices: INTEGER ] # Default 16 1038 # 1039 1040 # missing sphere definition 1041 - geometry: [ { sphere: } ] 1042 --- 1043 # unknown dummy parameter 1044 - geometry: [ { sphere: { dummy: 1 } } ] 1045 --- 1046 # missing radius parameter 1047 - geometry: [ { sphere: { slices: 10 } } ] 1048 --- 1049 # radius should be a number 1050 - geometry: [ { sphere: { radius: "dummy" } } ] 1051 --- 1052 # slices should be a number 1053 - geometry: [ { sphere: { slices: "dummy" } } ] 1054 --- 1055 # stacks should be a number 1056 - geometry: [ { sphere: { stacks: "dummy" } } ] 1057 --- 1058 # -1 invalid 1059 - geometry: [ { sphere: { radius: -1 } } ] 1060 --- 1061 # 0 invalid 1062 - geometry: [ { sphere: { radius: 0 } } ] 1063 --- 1064 # 0 invalid 1065 - geometry: [ { sphere: { radius: 1, slices: 0 } } ] 1066 --- 1067 # 4097 invalid 1068 - geometry: [ { sphere: { radius: 1, slices: 4097 } } ] 1069 --- 1070 # 0 invalid 1071 - geometry: [ { sphere: { radius: 1, stacks: 0 } } ] 1072 --- 1073 # 4097 invalid 1074 - geometry: [ { sphere: { radius: 1, stacks: 4097 } } ] 1075 --- 1076 # 2x radius 1077 - geometry: [ { sphere: { radius: 1, radius: 1 } } ] 1078 --- 1079 # 2x slices 1080 - geometry: [ { sphere: { slices: 10, slices: 10 } } ] 1081 --- 1082 # 2x stacks 1083 - geometry: [ { sphere: { stacks: 10, stacks: 10 } } ] 1084 --- 1085 1086 # 1087 # <stl> ::= 1088 # stl: 1089 # path: PATH 1090 # 1091 1092 # missing stl definition 1093 - geometry: [ { stl: } ] 1094 --- 1095 # missing path 1096 - geometry: [ { stl: { path: } } ] 1097 --- 1098 # unknown dummy parameter 1099 - geometry: [ { stl: { dummy: 1 } } ] 1100 --- 1101 # 2x path 1102 - geometry: [ { stl: { path: "file", path: "file" } } ] 1103 --- 1104 1105 # 1106 # <x_pivot> ::= 1107 # x_pivot: 1108 # point: <real3> 1109 # normal: <real3> 1110 # <target> 1111 # 1112 # <target> ::= 1113 # target: 1114 # anchor: <anchor-identifier> 1115 # | direction: <real3> 1116 # | position: <real3> 1117 # | <sun> 1118 # 1119 1120 # missing x_pivot definition 1121 - entity: 1122 x_pivot: 1123 --- 1124 # unknown dummy parameter 1125 - entity: 1126 x_pivot: 1127 dummy: 1 1128 --- 1129 # missing point definition 1130 - entity: 1131 x_pivot: 1132 point: 1133 --- 1134 # missing normal definition 1135 - entity: 1136 x_pivot: 1137 normal: 1138 --- 1139 # missing target definition 1140 - entity: 1141 x_pivot: 1142 target: 1143 --- 1144 # point should be a number 1145 - entity: 1146 x_pivot: 1147 point: "dummy" 1148 --- 1149 # point should have 3 values 1150 - entity: 1151 x_pivot: 1152 point: [ -4, 5.2 ] 1153 --- 1154 # point should have 3 values 1155 - entity: 1156 x_pivot: 1157 point: [ -4, 5.2, 0, 1 ] 1158 --- 1159 # normal should be a number 1160 - entity: 1161 x_pivot: 1162 normal: "dummy" 1163 --- 1164 # normal should have 3 values 1165 - entity: 1166 x_pivot: 1167 normal: [ -4, 5.2 ] 1168 --- 1169 # normal should have 3 values 1170 - entity: 1171 x_pivot: 1172 normal: [ -4, 5.2, 0, 1 ] 1173 --- 1174 # target should be a <target> 1175 - entity: 1176 x_pivot: 1177 target: "dummy" 1178 --- 1179 # missing anchor definition 1180 - entity: 1181 x_pivot: 1182 target: 1183 anchor: 1184 --- 1185 # missing direction definition 1186 - entity: 1187 x_pivot: 1188 target: 1189 direction: 1190 --- 1191 # missing position definition 1192 - entity: 1193 x_pivot: 1194 target: 1195 position: 1196 --- 1197 # undefined anchor 1198 - entity: 1199 x_pivot: 1200 target: 1201 anchor: dummy 1202 --- 1203 # direction should be a number 1204 - entity: 1205 x_pivot: 1206 target: 1207 direction: "dummy" 1208 --- 1209 # direction should have 3 values 1210 - entity: 1211 x_pivot: 1212 target: 1213 direction: [ -4, 5.2 ] 1214 --- 1215 # direction should have 3 values 1216 - entity: 1217 x_pivot: 1218 target: 1219 direction: [ -4, 5.2, 0, 1 ] 1220 --- 1221 # position should be a number 1222 - entity: 1223 x_pivot: 1224 target: 1225 position: "dummy" 1226 --- 1227 # position should have 3 values 1228 - entity: 1229 x_pivot: 1230 target: 1231 position: [ -4, 5.2 ] 1232 --- 1233 # position should have 3 values 1234 - entity: 1235 x_pivot: 1236 target: 1237 position: [ -4, 5.2, 0, 1 ] 1238 --- 1239 # sun should be a <sun> 1240 - entity: 1241 x_pivot: 1242 target: { sun: "dummy" } 1243 --- 1244 # missing point 1245 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1246 - entity: 1247 x_pivot: 1248 normal: [ -4, 5.2, 0 ] 1249 target: { sun: *sun } 1250 --- 1251 # missing normal 1252 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1253 - entity: 1254 x_pivot: 1255 point: [ -4, 5.2, 0 ] 1256 target: { sun: *sun } 1257 --- 1258 # missing target 1259 - entity: 1260 x_pivot: 1261 point: [ -4, 5.2, 0 ] 1262 normal: [ -4, 5.2, 0 ] 1263 --- 1264 # 2x point 1265 - entity: 1266 x_pivot: 1267 point: [ -4, 5.2, 0 ] 1268 point: [ -4, 5.2, 0 ] 1269 --- 1270 # 2x normal 1271 - entity: 1272 x_pivot: 1273 normal: [ -4, 5.2, 0 ] 1274 normal: [ -4, 5.2, 0 ] 1275 --- 1276 # 2x target 1277 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1278 - entity: 1279 x_pivot: 1280 target: { sun: *sun } 1281 target: { sun: *sun } 1282 --- 1283 1284 # <zx_pivot> ::= 1285 # zx_pivot: 1286 # spacing: REAL # in [0, INF) 1287 # ref_point: <real3> 1288 # <target> 1289 # 1290 # <target> ::= 1291 # target: 1292 # anchor: <anchor-identifier> 1293 # | direction: <real3> 1294 # | position: <real3> 1295 # | <sun> 1296 # 1297 1298 # missing zx_pivot definition 1299 - entity: 1300 zx_pivot: 1301 --- 1302 # unknown dummy parameter 1303 - entity: 1304 zx_pivot: 1305 dummy: 1 1306 --- 1307 # missing spacing definition 1308 - entity: 1309 zx_pivot: 1310 spacing: 1311 --- 1312 # missing ref_point definition 1313 - entity: 1314 zx_pivot: 1315 ref_point: 1316 --- 1317 # missing target definition 1318 - entity: 1319 zx_pivot: 1320 target: 1321 --- 1322 # spacing should be a number 1323 - entity: 1324 zx_pivot: 1325 spacing: "dummy" 1326 --- 1327 # -1 invalid 1328 - entity: 1329 zx_pivot: 1330 spacing: -1 1331 --- 1332 # spacing should be a number 1333 - entity: 1334 zx_pivot: 1335 ref_point: "dummy" 1336 --- 1337 # ref_point should have 3 values 1338 - entity: 1339 zx_pivot: 1340 ref_point: [ -4, 5.2 ] 1341 --- 1342 # ref_point should have 3 values 1343 - entity: 1344 zx_pivot: 1345 ref_point: [ -4, 5.2, 0, 1 ] 1346 --- 1347 # target should be a <target> 1348 - entity: 1349 zx_pivot: 1350 target: "dummy" 1351 --- 1352 # missing anchor definition 1353 - entity: 1354 zx_pivot: 1355 target: 1356 anchor: 1357 --- 1358 # missing direction definition 1359 - entity: 1360 zx_pivot: 1361 target: 1362 direction: 1363 --- 1364 # missing position definition 1365 - entity: 1366 zx_pivot: 1367 target: 1368 position: 1369 --- 1370 # undefined anchor 1371 - entity: 1372 zx_pivot: 1373 target: 1374 anchor: dummy 1375 --- 1376 # direction should be a number 1377 - entity: 1378 zx_pivot: 1379 target: 1380 direction: "dummy" 1381 --- 1382 # direction should have 3 values 1383 - entity: 1384 zx_pivot: 1385 target: 1386 direction: [ -4, 5.2 ] 1387 --- 1388 # direction should have 3 values 1389 - entity: 1390 zx_pivot: 1391 target: 1392 direction: [ -4, 5.2, 0, 1 ] 1393 --- 1394 # position should be a number 1395 - entity: 1396 zx_pivot: 1397 target: 1398 position: "dummy" 1399 --- 1400 # position should have 3 values 1401 - entity: 1402 zx_pivot: 1403 target: 1404 position: [ -4, 5.2 ] 1405 --- 1406 # position should have 3 values 1407 - entity: 1408 zx_pivot: 1409 target: 1410 position: [ -4, 5.2, 0, 1 ] 1411 --- 1412 # sun should be a <sun> 1413 - entity: 1414 zx_pivot: 1415 target: { sun: "dummy" } 1416 --- 1417 # missing point 1418 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1419 - entity: 1420 zx_pivot: 1421 normal: [ -4, 5.2, 0 ] 1422 target: { sun: *sun } 1423 --- 1424 # missing normal 1425 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1426 - entity: 1427 zx_pivot: 1428 point: [ -4, 5.2, 0 ] 1429 target: { sun: *sun } 1430 --- 1431 # missing target 1432 - entity: 1433 zx_pivot: 1434 point: [ -4, 5.2, 0 ] 1435 normal: [ -4, 5.2, 0 ] 1436 --- 1437 # 2x spacing 1438 - entity: 1439 zx_pivot: 1440 spacing: 1 1441 spacing: 1 1442 --- 1443 # 2x ref_point 1444 - entity: 1445 zx_pivot: 1446 ref_point: [ 0, 5.2, 0 ] 1447 ref_point: [ 0, 5.2, 0 ] 1448 --- 1449 # 2x target 1450 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1451 - entity: 1452 zx_pivot: 1453 target: { sun: *sun } 1454 target: { sun: *sun } 1455 --- 1456 1457 # 1458 # <anchors> ::= 1459 # anchors: 1460 # - <anchor-data> 1461 # [ - <anchor-data> ... ] 1462 # 1463 # <anchor-data> ::= 1464 # name: STRING 1465 # <position-description> 1466 # 1467 # <position-description> ::= 1468 # position: <real3> | hyperboloid_image_focals: <hyperboloid_focals> 1469 # 1470 1471 # missing anchors definition 1472 - entity: 1473 anchors: 1474 --- 1475 # missing name definition 1476 - entity: 1477 anchors: [ name: ] 1478 --- 1479 # missing position definition 1480 - entity: 1481 anchors: [ position: ] 1482 --- 1483 # missing hyperboloid_image_focals definition 1484 - entity: 1485 anchors: [ { hyperboloid_image_focals: } ] 1486 --- 1487 # missing position-description 1488 - entity: 1489 anchors: [ { name: "anchor" } ] 1490 --- 1491 # position should have 3 values 1492 - entity: 1493 anchors: [ { name: "anchor", position: [ -4, 5.2 ] } ] 1494 --- 1495 # position should have 3 values 1496 - entity: 1497 anchors: [ { name: "anchor", position: [ -4, 5.2, 0, 5 ] } ] 1498 --- 1499 # missing name 1500 - entity: 1501 anchors: [ { position: [ -4, 5.2, 0 ] } ] 1502 --- 1503 # 2x name 1504 - entity: 1505 anchors: [ { name: "anchor", name: "anchor" } ] 1506 --- 1507 # 2x position-description 1508 - entity: 1509 anchors: [ { position: [ -4, 5.2, 0 ], position: [ -4, 5.2, 0 ] } ] 1510 --- 1511 # 2x position-description 1512 - entity: 1513 anchors: 1514 - hyperboloid_image_focals: { real: 1, image: 1 } 1515 hyperboloid_image_focals: { real: 1, image: 1 } 1516 --- 1517 # 2x position-description 1518 - entity: 1519 anchors: 1520 - hyperboloid_image_focals: { real: 1, image: 1 } 1521 position: [ -4, 5.2, 0 ] 1522 --- 1523 # 2 anchors with same name 1524 - entity: 1525 anchors: 1526 - name: "anchor" 1527 position: [ -4, 5.2, 0 ] 1528 - name: "anchor" 1529 position: [ -4, 5.2, 0 ] 1530 --- 1531 1532 # 1533 # <entity> ::= 1534 # entity: 1535 # <entity-data> 1536 # 1537 # <entity-data> ::= 1538 # name: STRING 1539 # [ <geometry-data> | <x_pivot> | <zx_pivot> ] 1540 # [ <anchors> ] 1541 # [ <transform> ] 1542 # [ <children> ] 1543 # 1544 # <geometry-data> ::= 1545 # primary: INTEGER # in [0, 1] 1546 # <geometry> 1547 # 1548 1549 # missing entity definition 1550 - entity: 1551 --- 1552 # unknown dummy parameter 1553 - entity: { dummy: 0 } 1554 --- 1555 # missing name value 1556 - entity: { name: } 1557 --- 1558 # reserved word used as name 1559 - entity: { name: "self" } 1560 --- 1561 # missing primary value 1562 - entity: { primary: } 1563 --- 1564 # missing geometry value 1565 - entity: { geometry: } 1566 --- 1567 # missing x_pivot value 1568 - entity: { x_pivot: } 1569 --- 1570 # missing zx_pivot value 1571 - entity: { zx_pivot: } 1572 --- 1573 # missing anchors value 1574 - entity: { anchors: } 1575 --- 1576 # missing transform value 1577 - entity: { transform: } 1578 --- 1579 # missing children value 1580 - entity: { children: } 1581 --- 1582 # primary should be a number 1583 - entity: { primary: "dummy" } 1584 --- 1585 # -1 invalid 1586 - entity: { primary: -1 } 1587 --- 1588 # 2 invalid 1589 - entity: { primary: 2 } 1590 --- 1591 # missing entity name 1592 - entity: 1593 primary: 1 1594 geometry: 1595 - stl: { path: "file" } 1596 material: { matte: { reflectivity: 1 } } 1597 --- 1598 # missing entity primary 1599 - entity: 1600 name: "entity" 1601 geometry: 1602 - stl: { path: "file" } 1603 material: { matte: { reflectivity: 1 } } 1604 --- 1605 # primary invalid in this context 1606 - entity: 1607 name: "entity" 1608 primary: 1 1609 --- 1610 # 2x name 1611 - entity: { name: "ent", name: "ent" } 1612 --- 1613 # 2x primary 1614 - entity: { primary: 1, primary: 1 } 1615 --- 1616 # cannot define both geometry and x_pivot 1617 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1618 - entity: 1619 x_pivot: 1620 point: [ -4, 5.2, 0 ] 1621 normal: [ -4, 5.2, 0 ] 1622 target: { sun: *sun } 1623 geometry: [ { stl: { path: "file" } } ] 1624 --- 1625 # cannot define both geometry and zx_pivot 1626 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1627 - entity: 1628 zx_pivot: 1629 spacing: 1 1630 ref_point: [ 0, 5.2, 0 ] 1631 target: { sun: *sun } 1632 geometry: [ { stl: { path: "file" } } ] 1633 --- 1634 # cannot define both x_pivot and zx_pivot 1635 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1636 - entity: 1637 x_pivot: 1638 point: [ -4, 5.2, 0 ] 1639 normal: [ -4, 5.2, 0 ] 1640 target: { sun: *sun } 1641 zx_pivot: 1642 spacing: 1 1643 ref_point: [ 0, 5.2, 0 ] 1644 target: { sun: *sun } 1645 --- 1646 # 2x anchors 1647 - entity: 1648 anchors: 1649 - name: "anchor1" 1650 position: [ -4, 5.2, 0 ] 1651 anchors: 1652 - name: "anchor2" 1653 position: [ -4, 5.2, 0 ] 1654 --- 1655 # 2x transform 1656 - entity: 1657 transform: { rotation: [ -4, 5.2, 1 ] } 1658 transform: { rotation: [ -4, 5.2, 1 ] } 1659 --- 1660 # 2x children 1661 - entity: 1662 children: 1663 - name: "child1" 1664 children: 1665 - name: "child2" 1666 --- 1667 # 2 entities with the same name 1668 - entity: 1669 name: "foo" 1670 primary: 1 1671 geometry: 1672 - stl: { path: "file" } 1673 material: { matte: { reflectivity: 1 } } 1674 - entity: 1675 name: "foo" 1676 primary: 1 1677 geometry: 1678 - stl: { path: "file" } 1679 material: { matte: { reflectivity: 1 } } 1680 --- 1681 1682 # <template> ::= 1683 # template: 1684 # <entity-data> 1685 # 1686 # <entity-data> ::= 1687 # name: STRING 1688 # [ <geometry-data> | <x_pivot> | <zx_pivot> ] 1689 # [ <anchors> ] 1690 # [ <transform> ] 1691 # [ <children> ] 1692 # 1693 # <geometry-data> ::= 1694 # primary: INTEGER # in [0, 1] 1695 # <geometry> 1696 # 1697 1698 # missing template definition 1699 - template: &temp 1700 - entity: *temp 1701 --- 1702 # unknown dummy parameter 1703 - template: &temp { dummy: 0 } 1704 - entity: *temp 1705 --- 1706 # missing name value 1707 - template: &temp { name: } 1708 - entity: *temp 1709 --- 1710 # missing primary value 1711 - template: &temp { primary: } 1712 - entity: *temp 1713 --- 1714 # missing geometry value 1715 - template: &temp { geometry: } 1716 - entity: *temp 1717 --- 1718 # missing x_pivot value 1719 - template: &temp { x_pivot: } 1720 - entity: *temp 1721 --- 1722 # missing zx_pivot value 1723 - template: &temp { zx_pivot: } 1724 - entity: *temp 1725 --- 1726 # missing anchors value 1727 - template: &temp { anchors: } 1728 - entity: *temp 1729 --- 1730 # missing transform value 1731 - template: &temp { transform: } 1732 - entity: *temp 1733 --- 1734 # missing children value 1735 - template: &temp { children: } 1736 - entity: *temp 1737 --- 1738 # primary should be a number 1739 - template: &temp { primary: "dummy" } 1740 --- 1741 # -1 invalid 1742 - template: &temp { primary: -1 } 1743 - entity: *temp 1744 --- 1745 # 2 invalid 1746 - template: &temp { primary: 2 } 1747 - entity: *temp 1748 --- 1749 # missing template name 1750 - template: &temp 1751 geometry: 1752 - stl: { path: "file" } 1753 material: { matte: { reflectivity: 1 } } 1754 - entity: *temp 1755 --- 1756 # missing template primary 1757 - template: &temp 1758 name: "entity" 1759 geometry: 1760 - stl: { path: "file" } 1761 material: { matte: { reflectivity: 1 } } 1762 - entity: *temp 1763 --- 1764 # primary invalid in this context 1765 - template: &temp 1766 name: "entity" 1767 primary: 1 1768 - entity: *temp 1769 --- 1770 # 2x name 1771 - template: &temp { name: "ent", name: "ent" } 1772 - entity: *temp 1773 --- 1774 # 2x primary 1775 - template: &temp { primary: 1, primary: 1 } 1776 - entity: *temp 1777 --- 1778 # cannot define both geometry and x_pivot 1779 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1780 - template: &temp 1781 x_pivot: 1782 point: [ -4, 5.2, 0 ] 1783 normal: [ -4, 5.2, 0 ] 1784 target: { sun: *sun } 1785 geometry: [ { stl: { path: "file" } } ] 1786 - entity: *temp 1787 --- 1788 # cannot define both geometry and zx_pivot 1789 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1790 - template: &temp 1791 zx_pivot: 1792 spacing: 1 1793 ref_point: [ 0, 5.2, 0 ] 1794 target: { sun: *sun } 1795 geometry: [ { stl: { path: "file" } } ] 1796 - entity: *temp 1797 --- 1798 # cannot define both x_pivot and zx_pivot 1799 - sun: &sun { dni: 1, spectrum: [{wavelength: 1, data: 1}] } 1800 - template: &temp 1801 x_pivot: 1802 point: [ -4, 5.2, 0 ] 1803 normal: [ -4, 5.2, 0 ] 1804 target: { sun: *sun } 1805 zx_pivot: 1806 spacing: 1 1807 ref_point: [ 0, 5.2, 0 ] 1808 target: { sun: *sun } 1809 - entity: *temp 1810 --- 1811 # 2x anchors 1812 - template: &temp 1813 anchors: 1814 - name: "anchor1" 1815 position: [ -4, 5.2, 0 ] 1816 anchors: 1817 - name: "anchor2" 1818 position: [ -4, 5.2, 0 ] 1819 - entity: *temp 1820 --- 1821 # 2x transform 1822 - template: &temp 1823 transform: { rotation: [ -4, 5.2, 1 ] } 1824 transform: { rotation: [ -4, 5.2, 1 ] } 1825 - entity: *temp 1826 --- 1827 # 2x children 1828 - template: &temp 1829 children: 1830 - name: "child1" 1831 children: 1832 - name: "child2" 1833 - entity: *temp 1834 --- 1835 # 2 templates with the same name 1836 - template: &temp1 1837 name: "foo" 1838 primary: 1 1839 geometry: 1840 - stl: { path: "file" } 1841 material: { matte: { reflectivity: 1 } } 1842 - template: &temp2 1843 name: "foo" 1844 primary: 1 1845 geometry: 1846 - stl: { path: "file" } 1847 material: { matte: { reflectivity: 1 } } 1848 - entity: *temp1 1849 - entity: *temp2 1850 --- 1851 1852 # 1853 # <transform> ::= 1854 # transform: 1855 # translation: <real3> 1856 # rotation: <real3> 1857 # 1858 1859 # missing rotation parameters 1860 - entity: { transform: { rotation: } } 1861 --- 1862 # missing translation parameters 1863 - entity: { transform: { translation: } } 1864 --- 1865 # rotation should have 3 values 1866 - entity: { transform: { rotation: [ -4, 5.2 ] } } 1867 --- 1868 # rotation should have 3 values 1869 - entity: { transform: { rotation: [ -4, 5.2, 0, 1 ] } } 1870 --- 1871 # translation should have 3 values 1872 - entity: { transform: { translation: [ -4, 5.2 ] } } 1873 --- 1874 # translation should have 3 values 1875 - entity: { transform: { translation: [ -4, 5.2, 0, 1 ] } } 1876 --- 1877 # 2x rotation 1878 - entity: 1879 transform: 1880 rotation: [ -4, 5.2, -6.5 ] 1881 rotation: [ -4, 5.2, -6.5 ] 1882 --- 1883 # 2x translation 1884 - entity: 1885 transform: 1886 translation: [ -4, 5.2, -6.5 ] 1887 translation: [ -4, 5.2, -6.5 ] 1888 --- 1889 1890 # 1891 # <geometry> ::= 1892 # geometry: 1893 # - <object> 1894 # [ - <object> ... ] 1895 # 1896 # <object> ::= 1897 # <shape> 1898 # <material> 1899 # [ <transform> ] 1900 # 1901 1902 # missing geometry definition 1903 - geometry: 1904 --- 1905 # unknown dummy parameter 1906 - geometry: 1907 - dummy: 1 1908 --- 1909 # missing material definition 1910 - geometry: 1911 - stl: { path: "file" } 1912 --- 1913 # missing shape definition 1914 - geometry: 1915 - material: { matte: { reflectivity: 1 } } 1916 --- 1917 # 2x shape 1918 - geometry: 1919 - stl: { path: "file" } 1920 stl: { path: "file" } 1921 --- 1922 # 2x material 1923 - geometry: 1924 - material: { matte: { reflectivity: 1 } } 1925 material: { matte: { reflectivity: 1 } } 1926 --- 1927 # 2x transform 1928 - geometry: 1929 - transform: { rotation: [ -4, 5.2, -6.5 ] } 1930 transform: { rotation: [ -4, 5.2, -6.5 ] } 1931 --- 1932 1933 # 1934 # <atmosphere> ::= 1935 # atmosphere: 1936 # extinction: <mtl-data> # in [0, 1] 1937 # 1938 1939 # missing atmosphere definition 1940 - atmosphere: 1941 --- 1942 # unknown dummy parameter 1943 - atmosphere: 1944 dummy: 1 1945 --- 1946 # missing extinction definition 1947 - atmosphere: 1948 extinction: 1949 --- 1950 # extinction should be a number 1951 - atmosphere: 1952 extinction: "dummy" 1953 --- 1954 # 2 invalid 1955 - atmosphere: 1956 extinction: 2 1957 --- 1958 # 0 invalid 1959 - atmosphere: 1960 extinction: [{wavelength: 0, data: 1}] 1961 --- 1962 # 2 invalid 1963 - atmosphere: 1964 extinction: [{wavelength: 0, data: 2}] 1965 --- 1966 # 2x extinction 1967 - atmosphere: 1968 extinction: 0.1 1969 extinction: [{wavelength: 1, data: 1}] 1970 --- 1971 1972 # 1973 # <solar-factory> ::= 1974 # <sun> 1975 # <items> 1976 # [ <atmosphere> ] 1977 # 1978 # <items> ::= 1979 # - <item> 1980 # [ - <item> ... ] 1981 # 1982 # <item> ::= 1983 # <geometry> 1984 # | <material> 1985 # | <entity> 1986 # | <template> 1987 # 1988 1989 # unknown item dummy 1990 - dummy: 1 1991 --- 1992 # missing sun in document 1993 - entity: 1994 name: foo 1995 primary: 1 1996 geometry: 1997 - cuboid: { size: [1, 2, 3] } 1998 material: { matte: { reflectivity: 1 } } 1999 --- 2000 # 2x sun 2001 - sun: { dni: 1000, spectrum: [{wavelength: 1, data: 1}] } 2002 - sun: { dni: 1000, spectrum: [{wavelength: 1, data: 1}] } 2003 --- 2004 # 2x atmosphere 2005 - atmosphere: 2006 extinction: 0.1 2007 - atmosphere: 2008 extinction: 0.1