ok done. also MCB which is "both" i.e returns all alphanumeric and their inverses using /
assert(oconv("ABc.123","MCN") eq "123");
assert(oconv("ABc.123","MCA") eq "ABc");
assert(oconv("ABc.123","MCB") eq "ABc123");
assert(oconv("ABc.123","MC/N") eq "ABc.");
assert(oconv("ABc.123","MC/A") eq ".123");
assert(oconv("ABc.123","MC/B") eq ".");
you need #include <cassert> to do assert()
and here is the proggie which checks they work in unicode too.
#include <exodus/program.h>
#include <cassert>
programinit()
function main() {
printl("testmc says 'Hello World!'");
var punctuation=L"\u037E";//GREEK QUESTION MARK (Punctuation)
var lowercase=L"\u0393";//GREEK CAPITAL LETTER GAMMA (Letter) (Uppercas$
var uppercase=L"\u03B3";//GREEK SMALL LETTER GAMMA (Letter) (Lowercase)
var letters=lowercase^uppercase;
var digits=L"\u0660";//ARABIC-INDIC DIGIT ZERO (decimal digit)
assert(oconv(punctuation,"MCA") eq "");
assert(oconv(punctuation,"MCN") eq "");
assert(oconv(punctuation,"MCB") eq "");
assert(oconv(punctuation,"MC/A") eq punctuation);
assert(oconv(punctuation,"MC/N") eq punctuation);
assert(oconv(punctuation,"MC/B") eq punctuation);
assert(oconv(letters,"MCA") eq letters);
assert(oconv(letters,"MCN") eq "");
assert(oconv(letters,"MCB") eq letters);
assert(oconv(letters,"MC/A") eq "");
assert(oconv(letters,"MC/N") eq letters);
assert(oconv(letters,"MC/B") eq "");
assert(oconv(digits,"MCA") eq "");
assert(oconv(digits,"MCN") eq digits);
assert(oconv(digits,"MCB") eq digits);
assert(oconv(digits,"MC/A") eq digits);
assert(oconv(digits,"MC/N") eq "");
assert(oconv(digits,"MC/B") eq "");
printl("ok buddymate!");
return 0;
}
programexit()