Mercurial > vim
comparison src/testdir/test_writefile.vim @ 21532:dc1c26547a42 v8.2.1316
patch 8.2.1316: test 42 is still old style
Commit: https://github.com/vim/vim/commit/b61ef01cce2afd70fbfa2805336a26643109dfb7
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Jul 29 16:08:21 2020 +0200
patch 8.2.1316: test 42 is still old style
Problem: Test 42 is still old style.
Solution: Turn it into a new style test. (Yegappan Lakshmanan, closes https://github.com/vim/vim/issues/6561)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Wed, 29 Jul 2020 16:15:03 +0200 |
parents | 31cb78014fe4 |
children | 93dae47699fb |
comparison
equal
deleted
inserted
replaced
21531:c7925831adc8 | 21532:dc1c26547a42 |
---|---|
554 let &encoding = save_encoding | 554 let &encoding = save_encoding |
555 let &fileencodings = save_fileencodings | 555 let &fileencodings = save_fileencodings |
556 %bw! | 556 %bw! |
557 endfunc | 557 endfunc |
558 | 558 |
559 " Test for writing and reading a file starting with a BOM. | |
560 " Byte Order Mark (BOM) character for various encodings is below: | |
561 " UTF-8 : EF BB BF | |
562 " UTF-16 (BE): FE FF | |
563 " UTF-16 (LE): FF FE | |
564 " UTF-32 (BE): 00 00 FE FF | |
565 " UTF-32 (LE): FF FE 00 00 | |
566 func Test_readwrite_file_with_bom() | |
567 let utf8_bom = "\xEF\xBB\xBF" | |
568 let utf16be_bom = "\xFE\xFF" | |
569 let utf16le_bom = "\xFF\xFE" | |
570 let utf32be_bom = "\n\n\xFE\xFF" | |
571 let utf32le_bom = "\xFF\xFE\n\n" | |
572 let save_fileencoding = &fileencoding | |
573 set cpoptions+=S | |
574 | |
575 " Check that editing a latin1 file doesn't see a BOM | |
576 call writefile(["\xFE\xFElatin-1"], 'Xtest1') | |
577 edit Xtest1 | |
578 call assert_equal('latin1', &fileencoding) | |
579 call assert_equal(0, &bomb) | |
580 set fenc=latin1 | |
581 write Xfile2 | |
582 call assert_equal(["\xFE\xFElatin-1", ''], readfile('Xfile2', 'b')) | |
583 set bomb fenc=latin1 | |
584 write Xtest3 | |
585 call assert_equal(["\xFE\xFElatin-1", ''], readfile('Xtest3', 'b')) | |
586 set bomb& | |
587 | |
588 " Check utf-8 BOM | |
589 %bw! | |
590 call writefile([utf8_bom .. "utf-8"], 'Xtest1') | |
591 edit! Xtest1 | |
592 call assert_equal('utf-8', &fileencoding) | |
593 call assert_equal(1, &bomb) | |
594 call assert_equal('utf-8', getline(1)) | |
595 set fenc=latin1 | |
596 write! Xfile2 | |
597 call assert_equal(['utf-8', ''], readfile('Xfile2', 'b')) | |
598 set fenc=utf-8 | |
599 w! Xtest3 | |
600 call assert_equal([utf8_bom .. "utf-8", ''], readfile('Xtest3', 'b')) | |
601 | |
602 " Check utf-8 with an error (will fall back to latin-1) | |
603 %bw! | |
604 call writefile([utf8_bom .. "utf-8\x80err"], 'Xtest1') | |
605 edit! Xtest1 | |
606 call assert_equal('latin1', &fileencoding) | |
607 call assert_equal(0, &bomb) | |
608 call assert_equal("\xC3\xAF\xC2\xBB\xC2\xBFutf-8\xC2\x80err", getline(1)) | |
609 set fenc=latin1 | |
610 write! Xfile2 | |
611 call assert_equal([utf8_bom .. "utf-8\x80err", ''], readfile('Xfile2', 'b')) | |
612 set fenc=utf-8 | |
613 w! Xtest3 | |
614 call assert_equal(["\xC3\xAF\xC2\xBB\xC2\xBFutf-8\xC2\x80err", ''], | |
615 \ readfile('Xtest3', 'b')) | |
616 | |
617 " Check ucs-2 BOM | |
618 %bw! | |
619 call writefile([utf16be_bom .. "\nu\nc\ns\n-\n2\n"], 'Xtest1') | |
620 edit! Xtest1 | |
621 call assert_equal('utf-16', &fileencoding) | |
622 call assert_equal(1, &bomb) | |
623 call assert_equal('ucs-2', getline(1)) | |
624 set fenc=latin1 | |
625 write! Xfile2 | |
626 call assert_equal(["ucs-2", ''], readfile('Xfile2', 'b')) | |
627 set fenc=ucs-2 | |
628 w! Xtest3 | |
629 call assert_equal([utf16be_bom .. "\nu\nc\ns\n-\n2\n", ''], | |
630 \ readfile('Xtest3', 'b')) | |
631 | |
632 " Check ucs-2le BOM | |
633 %bw! | |
634 call writefile([utf16le_bom .. "u\nc\ns\n-\n2\nl\ne\n"], 'Xtest1') | |
635 " Need to add a NUL byte after the NL byte | |
636 call writefile(0z00, 'Xtest1', 'a') | |
637 edit! Xtest1 | |
638 call assert_equal('utf-16le', &fileencoding) | |
639 call assert_equal(1, &bomb) | |
640 call assert_equal('ucs-2le', getline(1)) | |
641 set fenc=latin1 | |
642 write! Xfile2 | |
643 call assert_equal(["ucs-2le", ''], readfile('Xfile2', 'b')) | |
644 set fenc=ucs-2le | |
645 w! Xtest3 | |
646 call assert_equal([utf16le_bom .. "u\nc\ns\n-\n2\nl\ne\n", "\n"], | |
647 \ readfile('Xtest3', 'b')) | |
648 | |
649 " Check ucs-4 BOM | |
650 %bw! | |
651 call writefile([utf32be_bom .. "\n\n\nu\n\n\nc\n\n\ns\n\n\n-\n\n\n4\n\n\n"], 'Xtest1') | |
652 edit! Xtest1 | |
653 call assert_equal('ucs-4', &fileencoding) | |
654 call assert_equal(1, &bomb) | |
655 call assert_equal('ucs-4', getline(1)) | |
656 set fenc=latin1 | |
657 write! Xfile2 | |
658 call assert_equal(["ucs-4", ''], readfile('Xfile2', 'b')) | |
659 set fenc=ucs-4 | |
660 w! Xtest3 | |
661 call assert_equal([utf32be_bom .. "\n\n\nu\n\n\nc\n\n\ns\n\n\n-\n\n\n4\n\n\n", ''], readfile('Xtest3', 'b')) | |
662 | |
663 " Check ucs-4le BOM | |
664 %bw! | |
665 call writefile([utf32le_bom .. "u\n\n\nc\n\n\ns\n\n\n-\n\n\n4\n\n\nl\n\n\ne\n\n\n"], 'Xtest1') | |
666 " Need to add three NUL bytes after the NL byte | |
667 call writefile(0z000000, 'Xtest1', 'a') | |
668 edit! Xtest1 | |
669 call assert_equal('ucs-4le', &fileencoding) | |
670 call assert_equal(1, &bomb) | |
671 call assert_equal('ucs-4le', getline(1)) | |
672 set fenc=latin1 | |
673 write! Xfile2 | |
674 call assert_equal(["ucs-4le", ''], readfile('Xfile2', 'b')) | |
675 set fenc=ucs-4le | |
676 w! Xtest3 | |
677 call assert_equal([utf32le_bom .. "u\n\n\nc\n\n\ns\n\n\n-\n\n\n4\n\n\nl\n\n\ne\n\n\n", "\n\n\n"], readfile('Xtest3', 'b')) | |
678 | |
679 set cpoptions-=S | |
680 let &fileencoding = save_fileencoding | |
681 call delete('Xtest1') | |
682 call delete('Xtest2') | |
683 call delete('Xtest3') | |
684 %bw! | |
685 endfunc | |
686 | |
559 " vim: shiftwidth=2 sts=2 expandtab | 687 " vim: shiftwidth=2 sts=2 expandtab |