#~ Copyright 2006 Rene Rivera.
#~ Distributed under the Boost Software License, Version 1.0.
#~ (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)

ECHO --- Testing var expansion... ;

local p0 = name ;
local p1 = dir/name ;
local p2 = dir/sub/name ;

assert name : (==) : $(p0:D=) ;
assert name : (==) : $(p1:D=) ;
assert name : (==) : $(p2:D=) ;
assert "" : (==) : $(p0:D) ;
assert dir : (==) : $(p1:D) ;
assert dir/sub : (==) : $(p2:D) ;
assert "" : (==) : $(p0:S) ;
assert ($(p0)) : (==) : [ MATCH ^@(.*) : "@($(p0))" ] ;
assert ($(p0)) : (==) : [ MATCH @(.*) : "--@($(p0))" ] ;
