* src/calcfield/calcfield.in: define a field name as an alpha char followed
by
zero or more (instead of one or more) non-bracket chars.
* src/calcfield/test/test_05.*: unit test verifying that this change works.
http://code.google.com/p/crush-tools/source/detail?r=522
Added:
/trunk/src/calcfield/test/test_05.expected
/trunk/src/calcfield/test/test_05.sh
Modified:
/trunk/src/calcfield/calcfield.in
=======================================
--- /dev/null
+++ /trunk/src/calcfield/test/test_05.expected Fri Apr 13 14:32:26 2012
@@ -0,0 +1,4 @@
+Text1;A;B;Text2;Calculated-Field
+hello;1;3;world;0.333333333333333
+tobias;7;1;wolff;7
+bla;400;0;test;0.0
=======================================
--- /dev/null
+++ /trunk/src/calcfield/test/test_05.sh Fri Apr 13 14:32:26 2012
@@ -0,0 +1,17 @@
+test_number=05
+description="single-character labels"
+
+infile="$test_dir/test.txt"
+outfile="$test_dir/test_$test_number.actual"
+expected="$test_dir/test_$test_number.expected"
+
+cat $infile | sed -e 's/Metric-0/A/; s/Metric-1/B/' |
+ $bin -p -d ';' -e '[A] / [B]' -b '0.0' > "$outfile"
+
+if [ $? -ne 0 ] ||
+ [ "`diff -q $outfile $expected`" ]; then
+ test_status $test_number 1 "$description" FAIL
+else
+ test_status $test_number 1 "$description" PASS
+ rm "$outfile"
+fi
=======================================
--- /trunk/src/calcfield/calcfield.in Mon Nov 17 11:46:40 2008
+++ /trunk/src/calcfield/calcfield.in Fri Apr 13 14:32:26 2012
@@ -150,7 +150,7 @@
if ($header_map) {
# [ FieldName ] -> $parts->[ indexOf(FieldName) ]
- while ($formula =~ /(\[\s*)([A-Za-z][^\]]+)(\s*\])/g) {
+ while ($formula =~ /(\[\s*)([A-Za-z][^\]]*)(\s*\])/g) {
my $label_idx = $header_map->{$2};
if (defined($label_idx)) {
$formula =~ s/\Q$1$2$3\E/\$parts->\[$label_idx\]/;