#!/usr/bin/perl

use MDK::Common;

foreach my $file (glob("dmidecode.*")) {
    my %wanted = cat_($file) =~ /\(=> (\S+): (\S+)\)/g;

    my %got = map {
	s/\s*: .*//;
	/(\S+):(.*)/ ? ($1 => $2) : ();
    } `lspcidrake --dmidecode $file`;

    my @missing = difference2([ keys %wanted ], [ keys %got ]);
    if (@missing) {
	warn "for $file, missing: ", join(' ', @missing), "\n";
    }

    my @surprise = difference2([ keys %got ], [ keys %wanted ]);
    if (@surprise) {
	warn "for $file, surprise: ", join(' ', map { "(=> $_: $got{$_})" } @surprise), "\n";
    }

    my @bad = grep { $wanted{$_} ne $got{$_} } intersection([ keys %wanted ], [ keys %got ]);
    if (@bad) {
	warn "for $file, bad $_: $wanted{$_} != $got{$_}\n" foreach @bad;
    }
}