1#!/usr/bin/perl -w 2# ----------------------------------------------------------------------------- 3 4use strict; 5use lib ($0 =~ m|^(.*/)| ? $1 : "."); 6use GnumericTest; 7 8&message ("Check that conditional format dependency tracking works."); 9 10my $src = "$samples/cond-format-deps.gnumeric"; 11&GnumericTest::report_skip ("file $src does not exist") unless -r $src; 12 13my $nbad = 0; 14 15&test1 (['A4' => 0], 'C4', "0"); 16&test1 (['A4' => 1], 'C4', "0.00"); 17 18&test1 (['A5' => 0], 'C5', "0"); 19&test1 (['A5' => 1], 'C5', "0.00"); 20 21&test1 (['A5' => 0, 'A6' => 0], 'C6', "0.00"); 22&test1 (['A5' => 1, 'A6' => 0], 'C6', "0"); 23&test1 (['A5' => 0, 'A6' => 1], 'C6', "0"); 24&test1 (['A5' => 1, 'A6' => 1], 'C6', "0.00"); 25 26&test1 (['A4' => 0, 'A5' => 0, 'A6' => 0, 'A7' => 0], 'C7', "0"); 27&test1 (['A4' => 0.5, 'A5' => 0.5, 'A6' => 0.5, 'A7' => 0.5], 'C7', "0.00"); 28&test1 (['A4' => 0, 'A5' => 0.5, 'A6' => 0.5, 'A7' => 0.5], 'C7', "0"); 29&test1 (['A4' => 0.5, 'A5' => 0, 'A6' => 0.5, 'A7' => 0.5], 'C7', "0"); 30&test1 (['A4' => 0.5, 'A5' => 0.5, 'A6' => 0, 'A7' => 0.5], 'C7', "0"); 31&test1 (['A4' => 0.5, 'A5' => 0.5, 'A6' => 0.5, 'A7' => 0], 'C7', "0"); 32&test1 (['A3' => 1, 'A4' => 0.5, 'A5' => 0.5, 'A6' => 0.5, 'A7' => 0.5, 'A8' => 1], 'C7', "0.00"); 33 34sub test1 { 35 my ($set, $rescell, $expected) = @_; 36 37 my @args = ('-T', 'Gnumeric_stf:stf_assistant', 38 '-O', 'format=preserve', 39 '--recalc', "--export-range=$rescell"); 40 while (@$set >= 2) { 41 my $c = shift @$set; 42 my $v = shift @$set; 43 push @args, "--set", "$c=$v"; 44 } 45 46 my $cmd = "$ssconvert " . &GnumericTest::quotearg (@args, $src, 'fd://1'); 47 print STDERR "# $cmd\n"; 48 my $result = `$cmd 2>&1`; 49 chomp $result; 50 if ($result eq $expected) { 51 } else { 52 print STDERR "No good. Expected $expected, but got\n"; 53 for my $line (split ("\n", $result)) { 54 print STDERR "| $line\n"; 55 } 56 $nbad++; 57 } 58} 59 60 61if ($nbad > 0) { 62 die "Fail\n"; 63} else { 64 print STDERR "Pass\n"; 65} 66