diff options
-rw-r--r-- | t/find_edid.t | 44 | ||||
-rwxr-xr-x | t/pod.t | 1 | ||||
-rw-r--r-- | t/test.t | 371 |
3 files changed, 44 insertions, 372 deletions
diff --git a/t/find_edid.t b/t/find_edid.t new file mode 100644 index 0000000..2e42a75 --- /dev/null +++ b/t/find_edid.t @@ -0,0 +1,44 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use English qw(-no_match_vars); +use Test::More; +use Parse::EDID; + +my %tests = ( + sample1 => [ + '00ffffffffffff0006af14a10000000001120103901a10780a50c59858528e2725505400000001010101010101010101010101010101ea1a007e502010303020360005a31000001aea1a007e502010303020360005a31000001a000000fe00593734374480423132314557300000000000000000000000000001010a202000a5' + ], + sample2 => [ + '00ffffffffffff0006af14a10000000001120103901a10780a50c59858528e2725505400000001010101010101010101010101010101ea1a007e502010303020360005a31000001aea1a007e502010303020360005a31000001a000000fe00593734374480423132314557300000000000000000000000000001010a202000a5', + '00ffffffffffff0022f0f62601010101181401036e362378eece50a3544c99260f5054a56b8081408180a900a940b300d10001010101283c80a070b023403020360022602100001a000000fc004850204c5032343735770a2020000000fd0030551e5e15000a202020202020000000ff00434e43303234303343500a20200085' + ] +); + +plan tests => scalar keys %tests; + +foreach my $test (keys %tests) { + my $string = read_file("t/xrandr/$test"); + + my @edids = find_edid_in_string($string); + is_deeply( + \@edids, + [ map { binary($_) } @{$tests{$test}} ], + "file $test: edids extraction" + ); +} +sub read_file { + my ($file) = @_; + local $RS; + open (my $handle, '<', $file) or die "Can't open $file: $ERRNO"; + my $content = <$handle>; + close $handle; + return $content; +} + +sub binary { + my ($string) = @_; + return pack("C*", map { hex($_) } $string =~ /(..)/g); +} @@ -10,5 +10,4 @@ eval { require Test::Pod; }; plan(skip_all => 'Test::Pod required') if $EVAL_ERROR; Test::Pod->import(); - all_pod_files_ok(); diff --git a/t/test.t b/t/test.t deleted file mode 100644 index 46fbc47..0000000 --- a/t/test.t +++ /dev/null @@ -1,371 +0,0 @@ -#!/usr/bin/perl - -use strict; -use warnings; - -use English qw(-no_match_vars); -use Test::More; -use YAML; - -# each value is an arrayref with 2 elements, indexed by file name: -# - expected output from find_edid_in_string function -# - list of tuples foreach edid fragement: -# - expected output from parse_edid function -# - expected output from check_parsed_edid function -my $tests = Load(join('', <DATA>)); - -# use test -my $count = 1; -foreach my $test (keys %$tests) { - # one find_edid test, plus two tests foreach fragment - $count += 1 + (2 * scalar @{$tests->{$test}->[1]}); -} -plan tests => $count; - -use_ok('Parse::EDID'); - -foreach my $test (keys %$tests) { - my $string = read_file("t/$test"); - - my @edids = find_edid_in_string($string); - is_deeply( - \@edids, - [ map { binary($_) } @{$tests->{$test}->[0]} ], - "file $test: edids extraction" - ); - - for my $i (0 .. $#edids) { - my $parsed_edid = parse_edid($edids[$i]); - is_deeply( - $parsed_edid, - $tests->{$test}->[1]->[$i]->[0], - "file $test, edid $i: parsing" - ); - - my $message = check_parsed_edid($parsed_edid); - is( - $message, - $tests->{$test}->[1]->[$i]->[1], - "file $test, edit $i: checking" - ); - } -} - -sub read_file { - my ($file) = @_; - local $RS; - open (my $handle, '<', $file) or die "Can't open $file: $ERRNO"; - my $content = <$handle>; - close $handle; - return $content; -} - -sub binary { - my ($string) = @_; - return pack("C*", map { hex($_) } $string =~ /(..)/g); -} -__DATA__ ---- -sample1: - - - - 00ffffffffffff0006af14a10000000001120103901a10780a50c59858528e2725505400000001010101010101010101010101010101ea1a007e502010303020360005a31000001aea1a007e502010303020360005a31000001a000000fe00593734374480423132314557300000000000000000000000000001010a202000a5 - - - - - - EISA_ID: AUOa114 - checksum: 165 - detailed_timings: - - ModeLine: '"1280x800" 68.9 1280 1328 1360 1406 800 803 809 816 -hsync +vsync' - ModeLine_comment: '# Monitor preferred modeline (60.1 Hz vsync, 49.0 kHz hsync, ratio 16/10, 124 dpi)' - digital_composite: 3 - horizontal_active: 1280 - horizontal_blanking: 126 - horizontal_border: 0 - horizontal_dpi: 124.567049808429 - horizontal_image_size: 261 - horizontal_sync_offset: 48 - horizontal_sync_positive: 0 - horizontal_sync_pulse_width: 32 - interlaced: 0 - pixel_clock: 68.9 - preferred: 1 - stereo: 0 - vertical_active: 800 - vertical_blanking: 16 - vertical_border: 0 - vertical_dpi: 124.662576687117 - vertical_image_size: 163 - vertical_sync_offset: 3 - vertical_sync_positive: 1 - vertical_sync_pulse_width: 6 - - ModeLine: '"1280x800" 68.9 1280 1328 1360 1406 800 803 809 816 -hsync +vsync' - ModeLine_comment: '# Monitor supported modeline (60.1 Hz vsync, 49.0 kHz hsync, ratio 16/10, 124 dpi)' - digital_composite: 3 - horizontal_active: 1280 - horizontal_blanking: 126 - horizontal_border: 0 - horizontal_dpi: 124.567049808429 - horizontal_image_size: 261 - horizontal_sync_offset: 48 - horizontal_sync_positive: 0 - horizontal_sync_pulse_width: 32 - interlaced: 0 - pixel_clock: 68.9 - stereo: 0 - vertical_active: 800 - vertical_blanking: 16 - vertical_border: 0 - vertical_dpi: 124.662576687117 - vertical_image_size: 163 - vertical_sync_offset: 3 - vertical_sync_positive: 1 - vertical_sync_pulse_width: 6 - diagonal_size: 12.1148583788498 - edid_revision: 3 - edid_version: 1 - established_timings: [] - extension_flag: 0 - feature_support: - DPMS_active_off: 0 - DPMS_standby: 0 - DPMS_suspend: 0 - GTF_compliance: 0 - has_preferred_timing: 1 - rgb: 0 - sRGB_compliance: 0 - gamma: 120 - manufacturer_name: AUO - max_size_horizontal: 26.1 - max_size_precision: mm - max_size_vertical: 16.3 - monitor_details: '' - monitor_text: - - "Y747D\x80B121EW0" - product_code: 41236 - ratio: 1.60122699386503 - ratio_name: 16/10 - ratio_precision: mm - serial_number: 0 - standard_timings: [] - video_input_definition: - composite_sync: 0 - digital: 1 - separate_sync: 0 - sync_on_green: 1 - voltage_level: 0 - week: 1 - year: 2008 - - '' -sample2: - - - - 00ffffffffffff0006af14a10000000001120103901a10780a50c59858528e2725505400000001010101010101010101010101010101ea1a007e502010303020360005a31000001aea1a007e502010303020360005a31000001a000000fe00593734374480423132314557300000000000000000000000000001010a202000a5 - - 00ffffffffffff0022f0f62601010101181401036e362378eece50a3544c99260f5054a56b8081408180a900a940b300d10001010101283c80a070b023403020360022602100001a000000fc004850204c5032343735770a2020000000fd0030551e5e15000a202020202020000000ff00434e43303234303343500a20200085 - - - - - - EISA_ID: AUOa114 - checksum: 165 - detailed_timings: - - ModeLine: '"1280x800" 68.9 1280 1328 1360 1406 800 803 809 816 -hsync +vsync' - ModeLine_comment: '# Monitor preferred modeline (60.1 Hz vsync, 49.0 kHz hsync, ratio 16/10, 124 dpi)' - digital_composite: 3 - horizontal_active: 1280 - horizontal_blanking: 126 - horizontal_border: 0 - horizontal_dpi: 124.567049808429 - horizontal_image_size: 261 - horizontal_sync_offset: 48 - horizontal_sync_positive: 0 - horizontal_sync_pulse_width: 32 - interlaced: 0 - pixel_clock: 68.9 - preferred: 1 - stereo: 0 - vertical_active: 800 - vertical_blanking: 16 - vertical_border: 0 - vertical_dpi: 124.662576687117 - vertical_image_size: 163 - vertical_sync_offset: 3 - vertical_sync_positive: 1 - vertical_sync_pulse_width: 6 - - ModeLine: '"1280x800" 68.9 1280 1328 1360 1406 800 803 809 816 -hsync +vsync' - ModeLine_comment: '# Monitor supported modeline (60.1 Hz vsync, 49.0 kHz hsync, ratio 16/10, 124 dpi)' - digital_composite: 3 - horizontal_active: 1280 - horizontal_blanking: 126 - horizontal_border: 0 - horizontal_dpi: 124.567049808429 - horizontal_image_size: 261 - horizontal_sync_offset: 48 - horizontal_sync_positive: 0 - horizontal_sync_pulse_width: 32 - interlaced: 0 - pixel_clock: 68.9 - stereo: 0 - vertical_active: 800 - vertical_blanking: 16 - vertical_border: 0 - vertical_dpi: 124.662576687117 - vertical_image_size: 163 - vertical_sync_offset: 3 - vertical_sync_positive: 1 - vertical_sync_pulse_width: 6 - diagonal_size: 12.1148583788498 - edid_revision: 3 - edid_version: 1 - established_timings: [] - extension_flag: 0 - feature_support: - DPMS_active_off: 0 - DPMS_standby: 0 - DPMS_suspend: 0 - GTF_compliance: 0 - has_preferred_timing: 1 - rgb: 0 - sRGB_compliance: 0 - gamma: 120 - manufacturer_name: AUO - max_size_horizontal: 26.1 - max_size_precision: mm - max_size_vertical: 16.3 - monitor_details: '' - monitor_text: - - "Y747D\x80B121EW0" - product_code: 41236 - ratio: 1.60122699386503 - ratio_name: 16/10 - ratio_precision: mm - serial_number: 0 - standard_timings: [] - video_input_definition: - composite_sync: 0 - digital: 1 - separate_sync: 0 - sync_on_green: 1 - voltage_level: 0 - week: 1 - year: 2008 - - '' - - - - EISA_ID: HWP26f6 - HorizSync: 30-94 - VertRefresh: 48-85 - checksum: 133 - detailed_timings: - - ModeLine: '"1920x1200" 154 1920 1968 2000 2080 1200 1203 1209 1235 -hsync +vsync' - ModeLine_comment: '# Monitor preferred modeline (60.0 Hz vsync, 74.0 kHz hsync, ratio 16/10, 90 dpi)' - bad_ratio: 1 - digital_composite: 3 - horizontal_active: 1920 - horizontal_blanking: 160 - horizontal_border: 0 - horizontal_dpi: 90.3111111111111 - horizontal_image_size: 546 - horizontal_sync_offset: 48 - horizontal_sync_positive: 0 - horizontal_sync_pulse_width: 32 - interlaced: 0 - pixel_clock: 154 - preferred: 1 - stereo: 0 - vertical_active: 1200 - vertical_blanking: 35 - vertical_border: 0 - vertical_dpi: 87.0857142857143 - vertical_image_size: 352 - vertical_sync_offset: 3 - vertical_sync_positive: 1 - vertical_sync_pulse_width: 6 - diagonal_size: 25.3348827451908 - edid_revision: 3 - edid_version: 1 - established_timings: - - X: 640 - Y: 480 - vfreq: 60 - - X: 640 - Y: 480 - vfreq: 75 - - X: 720 - Y: 400 - vfreq: 70 - - X: 800 - Y: 600 - vfreq: 60 - - X: 800 - Y: 600 - vfreq: 75 - - X: 832 - Y: 624 - vfreq: 75 - - X: 1024 - Y: 768 - vfreq: 60 - - X: 1024 - Y: 768 - vfreq: 75 - - X: 1280 - Y: 1024 - vfreq: 75 - extension_flag: 0 - feature_support: - DPMS_active_off: 1 - DPMS_standby: 1 - DPMS_suspend: 1 - GTF_compliance: 0 - has_preferred_timing: 1 - rgb: 0 - sRGB_compliance: 1 - gamma: 120 - manufacturer_name: HWP - max_size_horizontal: 54 - max_size_precision: cm - max_size_vertical: 35 - monitor_details: '' - monitor_name: HP LP2475w - monitor_range: - horizontal_max: 94 - horizontal_min: 30 - pixel_clock_max: 210 - vertical_max: 85 - vertical_min: 48 - product_code: 9974 - ratio: 1.55113636363636 - ratio_name: 16/10 - ratio_precision: mm - serial_number: 16843009 - serial_number2: - - CNC02403CP - standard_timings: - - X: 1280 - Y: 960 - ratio: 4/3 - vfreq: 60 - - X: 1280 - Y: 1024 - ratio: 5/4 - vfreq: 60 - - X: 1600 - Y: 1000 - ratio: 16/10 - vfreq: 60 - - X: 1600 - Y: 1200 - ratio: 4/3 - vfreq: 60 - - X: 1680 - Y: 1050 - ratio: 16/10 - vfreq: 60 - - X: 1920 - Y: 1200 - ratio: 16/10 - vfreq: 60 - video_input_definition: - composite_sync: 1 - digital: 0 - separate_sync: 1 - sync_on_green: 0 - voltage_level: 2 - week: 24 - year: 2010 - - '' |