| | 703 | |
| | 704 | /** |
| | 705 | * Test for wp_exif_frac2dec verified that it properly handles edge cases |
| | 706 | * and always returns an int or float, or original value for failures. |
| | 707 | * |
| | 708 | * @param string $fraction The fraction to convert. |
| | 709 | * @param string $expect The expected result. |
| | 710 | * |
| | 711 | * @ticket 54385 |
| | 712 | * @dataProvider data_wp_exif_frac2dec |
| | 713 | * |
| | 714 | * @covers ::wp_exif_frac2dec |
| | 715 | */ |
| | 716 | public function test_wp_exif_frac2dec( $fraction, $expect ) { |
| | 717 | $this->assertSame( $expect, wp_exif_frac2dec( $fraction ) ); |
| | 718 | } |
| | 719 | |
| | 720 | /** |
| | 721 | * Data provider for testing `wp_exif_frac2dec()`. |
| | 722 | * |
| | 723 | * @return array { |
| | 724 | * Arguments for testing `wp_exif_frac2dec()`. |
| | 725 | */ |
| | 726 | public function data_wp_exif_frac2dec() { |
| | 727 | return array( |
| | 728 | 'division by zero is prevented' => array( |
| | 729 | 'fraction' => '0/0', |
| | 730 | 'expect' => '0/0', |
| | 731 | ), |
| | 732 | 'division by zero is prevented 2' => array( |
| | 733 | 'fraction' => '100/0', |
| | 734 | 'expect' => '100/0', |
| | 735 | ), |
| | 736 | 'typical fnumber' => array( |
| | 737 | 'fraction' => '4.8', |
| | 738 | 'expect' => '4.8', |
| | 739 | ), |
| | 740 | 'typical focal length' => array( |
| | 741 | 'fraction' => '37 mm', |
| | 742 | 'expect' => '37 mm', |
| | 743 | ), |
| | 744 | 'typical exposure time' => array( |
| | 745 | 'fraction' => '1/350', |
| | 746 | 'expect' => 0.002857142857142857, |
| | 747 | ), |
| | 748 | 'division by text prevented' => array( |
| | 749 | 'fraction' => '0/abc', |
| | 750 | 'expect' => '0/abc', |
| | 751 | ), |
| | 752 | 'non fraction returns original value' => array( |
| | 753 | 'fraction' => '0.0', |
| | 754 | 'expect' => '0.0', |
| | 755 | ), |
| | 756 | 'non fraction returns original value 2' => array( |
| | 757 | 'fraction' => '010', |
| | 758 | 'expect' => '010', |
| | 759 | ), |
| | 760 | 'non fraction returns original value 3' => array( |
| | 761 | 'fraction' => 10.123, |
| | 762 | 'expect' => 10.123, |
| | 763 | ), |
| | 764 | 'valid fraction' => array( |
| | 765 | 'fraction' => '50/100', |
| | 766 | 'expect' => 0.5, |
| | 767 | ), |
| | 768 | 'valid fraction 2' => array( |
| | 769 | 'fraction' => '25/100', |
| | 770 | 'expect' => .25, |
| | 771 | ), |
| | 772 | 'valid fraction 3' => array( |
| | 773 | 'fraction' => '4/2', |
| | 774 | 'expect' => 2, |
| | 775 | ), |
| | 776 | 'non fraction returns original value' => array( |
| | 777 | 'fraction' => '0', |
| | 778 | 'expect' => '0', |
| | 779 | ), |
| | 780 | 'text is prevented' => array( |
| | 781 | 'fraction' => 'path/to/file', |
| | 782 | 'expect' => 'path/to/file', |
| | 783 | ), |
| | 784 | 'text is prevented 2' => array( |
| | 785 | 'fraction' => '123notafraction', |
| | 786 | 'expect' => '123notafraction', |
| | 787 | ), |
| | 788 | 'invalid input prevented' => array( |
| | 789 | 'fraction' => '/', |
| | 790 | 'expect' => '/', |
| | 791 | ), |
| | 792 | 'invalid input prevented 2' => array( |
| | 793 | 'fraction' => '1/2/3', |
| | 794 | 'expect' => '1/2/3', |
| | 795 | ), |
| | 796 | 'invalid input prevented 3' => array( |
| | 797 | 'fraction' => '///', |
| | 798 | 'expect' => '///', |
| | 799 | ), |
| | 800 | 'null value' => array( |
| | 801 | 'fraction' => null, |
| | 802 | 'expect' => null, |
| | 803 | ), |
| | 804 | 'empty array value' => array( |
| | 805 | 'fraction' => array(), |
| | 806 | 'expect' => array(), |
| | 807 | ), |
| | 808 | ); |
| | 809 | } |