Using all functions
static assert( isValueAccessString( "hello" ) ); static assert( isValueAccessString( "x" ) ); static assert( isValueAccessString( "_ok" ) ); static assert( isValueAccessString( "__ok" ) ); static assert( isValueAccessString( "__o1k" ) ); static assert( isValueAccessString( "_2o1k3" ) ); static assert( !isValueAccessString( "0__ok" ) ); static assert( !isValueAccessString( "__o-k" ) ); static assert( isArrayAccessString( "xyz" ) ); static assert( isArrayAccessString( "x|dx|y|dy", "|" ) ); static assert( isCompatibleArrayAccessString( 4, "x|dx|y|dy", "|" ) ); static assert( isCompatibleArrayAccessString( 3, "xyz" ) ); static assert( !isCompatibleArrayAccessString( 4, "xxxy" ) ); static assert( !isCompatibleArrayAccessString( 3, "xxx" ) ); static assert( isCompatibleArrayAccessStrings( 3, "xyz" ) ); static assert( isCompatibleArrayAccessStrings( 3, "x y z", " " ) ); static assert( isCompatibleArrayAccessStrings( 2, "xy|uv" ) ); static assert( isCompatibleArrayAccessStrings( 3, "abc|efg" ) ); static assert( !isCompatibleArrayAccessStrings( 3, "abc|afg" ) ); static assert( !isCompatibleArrayAccessStrings( 3, "xxy|uv" ) ); static assert( isCompatibleArrayAccessStrings( 3, "x,y,z;u,v,t", ",", ";" ) ); static assert( getIndex( "x y z", "x", " " ) == 0 ); static assert( getIndex( "x y z", "y", " " ) == 1 ); static assert( getIndex( "x y z", "z", " " ) == 2 ); static assert( getIndex( "x|dx|y|dy", "dx", "|", ";" ) == 1 ); static assert( getIndex( "x|dx|y|dy", "1dx", "|", ";" ) == -1 ); static assert( oneOfAccessAll("xyz","xy") ); static assert( oneOfAccessAll("xyz","yx") ); static assert( oneOfAccessAll("xyz","xxxxyxyyyz") ); static assert( oneOfAccessAll("x,y,z","xxxxyxyyyz",",") ); static assert( isOneSymbolPerFieldAccessString("xyz") ); static assert( isOneSymbolPerFieldAccessString("x,y,z",",") ); static assert( isOneSymbolPerFieldForAnyAccessString( "xy|uv", "", "|" ) ); static assert( isOneSymbolPerFieldForAnyAccessString( "near far|n f", " ", "|" ) ); static assert( !isArrayAccessString("x.y.z","",false) ); static assert( !isArrayAccessString("x.y.z","",true) ); static assert( !isArrayAccessString("x.y.z"," ",false) ); static assert( isArrayAccessString("x.y.z"," ",true) ); static assert( isArrayAccessString("pos.x pos.y pos.z vel.x vel.y vel.z"," ",true) ); static assert( isArrayAccessString( "pos vel", " ", true ) ); static assert( isArrayAccessString( "abcd", " ", true ) ); static assert( isArrayAccessString( "a1 a2", " ", true ) ); static assert( isArrayAccessString( "ok.no", " ", true ) ); auto fstr = "pos.x pos.y vel.x vel.y"; assert( isArrayAccessString( fstr, " ", true ) ); assert( !isArrayAccessString( fstr[0 .. $-1], " ", true ) ); assert( !isArrayAccessString( "ok.1", " ", true ) ); assert( !isArrayAccessString( "1abcd", " ", true ) ); assert( !isArrayAccessString( "not 2ok", " ", true ) );
check symbol count for access to field