blob: 44d7f2d7477c4ea666dd90832ecb12123462afc3 [file] [log] [blame]
import library Strings;
modeltype ECORE uses 'http://www.eclipse.org/emf/2002/Ecore';
modeltype QVT uses qvtoperational('http://www.eclipse.org/QVT/1.0.0/Operational');
transformation stdlibString(in m : ECORE, out x : ECORE);
main() {
assert fatal ('ab'.length() = 2);
assert fatal ('ab'.size() = 2);
assert fatal ('12345'.substringBefore('34') = '12');
assert fatal ('12345'.substringAfter('12') = '345');
assert fatal ('abc'.toUpper() = 'ABC');
assert fatal ('ABC'.toLower() = 'abc');
assert fatal ('abc'.firstToUpper() = 'Abc');
assert fatal ('abc'.lastToUpper() = 'abC');
assert fatal ('abc'.indexOf('abc') = 1);
assert fatal ('abc'.indexOf('b') = 2);
assert fatal ('abc'.indexOf('x') = 0);
var nullStr : String := null;
assert fatal ('abc'.endsWith('bc') and nullStr.endsWith('a').oclIsInvalid());
assert fatal ('abc'.startsWith('ab') and nullStr.startsWith('ab').oclIsInvalid());
assert fatal (' abc '.trim() = 'abc');
assert fatal (' x vh y '.normalizeSpace() = 'x vh y');
assert fatal ('ababa'.replace('ab', 'xy') = 'xyxya');
assert fatal ('aaaab'.match('a*b'));
assert fatal ('aBc'.equalsIgnoreCase('AbC'));
assert fatal ('a1212c'.find('12') = 2);
assert fatal ('a1212c'.rfind('12') = 4);
assert fatal ('aa1234aa'.isQuoted('aa') and 'aa1234'.isQuoted('aa') = false);
assert fatal ('1234'.quotify('aa') = 'aa1234aa' and ''.quotify('aa') = 'aaaa');
assert fatal ('aa1234aa'.unquotify('aa') = '1234' and ''.unquotify('aaaa') = '');
assert fatal ('true'.matchBoolean(true) and '1'.matchBoolean(true)
and '0'.matchBoolean(false) and 'false'.matchBoolean(false));
-- check case-insensitiveness
assert fatal ('false'.matchBoolean(false));
assert fatal ('False'.matchBoolean(false));
assert fatal ('TRUE'.matchBoolean(true));
assert fatal ('true'.matchBoolean(true));
assert fatal ('12'.matchInteger(12) and '1'.matchInteger(20) = false and 'x'.matchInteger(12) = false);
assert fatal ('12.0'.matchFloat(12) and '1.2'.matchFloat(20) = false and 'x'.matchFloat(12.3) = false);
--assert fatal ('1abc'.matchIdentifier()
assert fatal ('true'.asBoolean() and '1'.asBoolean()
and '0'.asBoolean() = false and 'false'.asBoolean() = false and 'ddd'.asBoolean() = null);
assert fatal ('123'.asInteger() = 123 and 'abc'.asInteger() = null);
assert fatal ('123'.asFloat() = 123.0 and 'abc'.asFloat() = null);
-- assert fatal ();
assert fatal (String.getStrCounter('Foo') = null);
assert fatal (String.startStrCounter('Foo') = null);
assert fatal (String.getStrCounter('Foo') = 0);
assert fatal (String.incrStrCounter('Foo') = 1);
assert fatal (String.incrStrCounter('Foo') = 2);
assert fatal ('Foo'.addSuffixNumber() = 'Foo2');
assert fatal ('Foo'.addSuffixNumber() = 'Foo3');
assert fatal (String.startStrCounter('Foo') = null);
assert fatal (String.incrStrCounter('Foo') = 1);
assert fatal (String.startStrCounter('Bar') = null);
assert fatal (String.incrStrCounter('Bar') = 1);
assert fatal (String.restartAllStrCounter() = null);
assert fatal (String.getStrCounter('Foo') = 0);
assert fatal (String.getStrCounter('Bar') = 0);
}