Skip to content

Commit

Permalink
Finished those unit tests.
Browse files Browse the repository at this point in the history
They're fairly comprehensive, I think.
  • Loading branch information
Chris Miller committed May 18, 2012
1 parent da2b174 commit bedbfa2
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 46 deletions.
2 changes: 1 addition & 1 deletion ArgumentParser/NSScanner+EscapedScanning.m
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ - (void)fsargs_scanUpToCharacterFromSet:(NSCharacterSet *)upTo unlessPrecededByC
if (s) if (s)
[retVal appendString:s]; [retVal appendString:s];


if ([escapedBy characterIsMember:[[self string] characterAtIndex:[self scanLocation]]]) { if ([escapedBy characterIsMember:[[self string] characterAtIndex:[self scanLocation]-1]]) {
// pop the last character from retVal // pop the last character from retVal
[retVal deleteCharactersInRange:NSMakeRange([retVal length]-1, 1)]; [retVal deleteCharactersInRange:NSMakeRange([retVal length]-1, 1)];
// add the next character // add the next character
Expand Down
113 changes: 68 additions & 45 deletions ArgumentParserTests/SignatureFormatConstructionTests.m
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -96,70 +96,93 @@ - (void)testTokenizer


/* 2012-05-17 14:40:03.348 otest[5274:403] ts for "[-f --file if]={1,1}": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <Keyword: {> <Number: 1> <Keyword: ,> <Number: 1> <Keyword: }> <EOF> */ /* 2012-05-17 14:40:03.348 otest[5274:403] ts for "[-f --file if]={1,1}": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <Keyword: {> <Number: 1> <Keyword: ,> <Number: 1> <Keyword: }> <EOF> */
ts = [t tokenise:@"[-f --file if]={1,1}"]; ts = [t tokenise:@"[-f --file if]={1,1}"];
FSTAssertKeywordEquals([ts popToken], @"["); // <Keyword: [> FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-f"); // <Switch: -f> FSTAssertSwitchEquals([ts popToken], @"-f");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken); // <Whitespace> FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertSwitchEquals([ts popToken], @"--file"); // <Switch: --file> FSTAssertSwitchEquals([ts popToken], @"--file");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken); // <Whitespace> FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertAliasEquals([ts popToken], @"if"); // <Alias: if> FSTAssertAliasEquals([ts popToken], @"if");
FSTAssertKeywordEquals([ts popToken], @"]"); // <Keyword: ]> FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKeywordEquals([ts popToken], @"="); // <Keyword: => FSTAssertKeywordEquals([ts popToken], @"=");
FSTAssertKeywordEquals([ts popToken], @"{"); // <Keyword: {> FSTAssertKeywordEquals([ts popToken], @"{");
FSTAssertIntegerNumberEquals([ts popToken], 1); // <Number: 1> FSTAssertIntegerNumberEquals([ts popToken], 1);
FSTAssertKeywordEquals([ts popToken], @","); // <Keyword: ,> FSTAssertKeywordEquals([ts popToken], @",");
FSTAssertIntegerNumberEquals([ts popToken], 1); // <Number: 1> FSTAssertIntegerNumberEquals([ts popToken], 1);
FSTAssertKeywordEquals([ts popToken], @"}"); // <Keyword: }> FSTAssertKeywordEquals([ts popToken], @"}");
FSTAssertKindOfClass([ts popToken], CPEOFToken); // <EOF> FSTAssertKindOfClass([ts popToken], CPEOFToken);


/* 2012-05-17 14:40:03.349 otest[5274:403] ts for "[-f --file if]={1,}": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <Keyword: {> <Number: 1> <Keyword: ,> <Keyword: }> <EOF> */ /* 2012-05-17 14:40:03.349 otest[5274:403] ts for "[-f --file if]={1,}": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <Keyword: {> <Number: 1> <Keyword: ,> <Keyword: }> <EOF> */
ts = [t tokenise:@"[-f --file if]={1,}"]; ts = [t tokenise:@"[-f --file if]={1,}"];
FSTAssertKeywordEquals([ts popToken], @"["); // <Keyword: [> FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-f"); // <Switch: -f> FSTAssertSwitchEquals([ts popToken], @"-f");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken); // <Whitespace> FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertSwitchEquals([ts popToken], @"--file"); // <Switch: --file> FSTAssertSwitchEquals([ts popToken], @"--file");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken); // <Whitespace> FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertAliasEquals([ts popToken], @"if"); // <Alias: if> FSTAssertAliasEquals([ts popToken], @"if");
FSTAssertKeywordEquals([ts popToken], @"]"); // <Keyword: ]> FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKeywordEquals([ts popToken], @"="); // <Keyword: => FSTAssertKeywordEquals([ts popToken], @"=");
FSTAssertKeywordEquals([ts popToken], @"{"); // <Keyword: {> FSTAssertKeywordEquals([ts popToken], @"{");
FSTAssertIntegerNumberEquals([ts popToken], 1); // <Number: 1> FSTAssertIntegerNumberEquals([ts popToken], 1);
FSTAssertKeywordEquals([ts popToken], @","); // <Keyword: ,> FSTAssertKeywordEquals([ts popToken], @",");
FSTAssertKeywordEquals([ts popToken], @"}"); // <Keyword: }> FSTAssertKeywordEquals([ts popToken], @"}");
FSTAssertKindOfClass([ts popToken], CPEOFToken); // <EOF> FSTAssertKindOfClass([ts popToken], CPEOFToken);


/* 2012-05-17 14:40:03.349 otest[5274:403] ts for "[-f --file if]={}": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <Keyword: {> <Keyword: }> <EOF> */ /* 2012-05-17 14:40:03.349 otest[5274:403] ts for "[-f --file if]={}": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <Keyword: {> <Keyword: }> <EOF> */
ts = [t tokenise:@"[-f --file if]={}"]; ts = [t tokenise:@"[-f --file if]={}"];
FSTAssertKeywordEquals([ts popToken], @"["); // <Keyword: [> FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-f"); // <Switch: -f> FSTAssertSwitchEquals([ts popToken], @"-f");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken); // <Whitespace> FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertSwitchEquals([ts popToken], @"--file"); // <Switch: --file> FSTAssertSwitchEquals([ts popToken], @"--file");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken); // <Whitespace> FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertAliasEquals([ts popToken], @"if"); // <Alias: if> FSTAssertAliasEquals([ts popToken], @"if");
FSTAssertKeywordEquals([ts popToken], @"]"); // <Keyword: ]> FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKeywordEquals([ts popToken], @"="); // <Keyword: => FSTAssertKeywordEquals([ts popToken], @"=");
FSTAssertKeywordEquals([ts popToken], @"{"); // <Keyword: {> FSTAssertKeywordEquals([ts popToken], @"{");
FSTAssertKeywordEquals([ts popToken], @"}"); // <Keyword: }> FSTAssertKeywordEquals([ts popToken], @"}");
FSTAssertKindOfClass([ts popToken], CPEOFToken); // <EOF> FSTAssertKindOfClass([ts popToken], CPEOFToken);


/* 2012-05-17 14:40:03.351 otest[5274:403] ts for "[-f --file if]=": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <EOF> */ /* 2012-05-17 14:40:03.351 otest[5274:403] ts for "[-f --file if]=": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <Keyword: => <EOF> */
ts = [t tokenise:@"[-f --file if]="]; ts = [t tokenise:@"[-f --file if]="];

FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-f");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertSwitchEquals([ts popToken], @"--file");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertAliasEquals([ts popToken], @"if");
FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKeywordEquals([ts popToken], @"=");
FSTAssertKindOfClass([ts popToken], CPEOFToken);


/* 2012-05-17 14:40:03.352 otest[5274:403] ts for "[-f --file if]": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <EOF> */ /* 2012-05-17 14:40:03.352 otest[5274:403] ts for "[-f --file if]": <Keyword: [> <Switch: -f> <Whitespace> <Switch: --file> <Whitespace> <Alias: if> <Keyword: ]> <EOF> */
ts = [t tokenise:@"[-f --file if]"]; ts = [t tokenise:@"[-f --file if]"];

FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-f");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertSwitchEquals([ts popToken], @"--file");
FSTAssertKindOfClass([ts popToken], CPWhiteSpaceToken);
FSTAssertAliasEquals([ts popToken], @"if");
FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKindOfClass([ts popToken], CPEOFToken);


// a very specific test case for improperly escaped characters in flag-style switches // a very specific test case for improperly escaped characters in flag-style switches
/* 2012-05-18 10:25:14.578 otest[2800:403] ts: <Keyword: [> <Error> */ /* 2012-05-18 10:25:14.578 otest[2800:403] ts: <Keyword: [> <Error> */
ts = [t tokenise:@"[-\\[]"]; ts = [t tokenise:@"[-\\[]"];
FSTAssertKeywordEquals([ts popToken], @"["); // <Keyword: [> FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertKindOfClass([ts popToken], CPErrorToken); // <Error> FSTAssertKindOfClass([ts popToken], CPErrorToken);


/* 2012-05-17 14:40:03.353 otest[5274:403] ts for "[-f -[]": <Keyword: [> <Switch: -f> <Whitespace> <Switch: -[> <Keyword: ]> <EOF> */ /* 2012-05-17 14:40:03.353 otest[5274:403] ts for "[-[]": <Keyword: [> <Switch: -[> <Keyword: ]> <EOF> */
ts = [t tokenise:@"[-[]]"]; ts = [t tokenise:@"[-[]"];
FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-[");
FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKindOfClass([ts popToken], CPEOFToken);


/* 2012-05-17 14:40:03.353 otest[5274:403] ts for "[-f -\]]": <Keyword: [> <Switch: -f> <Whitespace> <Switch: -\> <Keyword: ]> <Keyword: ]> <EOF> */ /* 2012-05-18 10:30:45.854 otest[2925:403] ts: <Keyword: [> <Switch: -]> <Keyword: ]> <EOF> */
ts = [t tokenise:@"[-\\]]"]; ts = [t tokenise:@"[-\\]]"];
FSTAssertKeywordEquals([ts popToken], @"[");
FSTAssertSwitchEquals([ts popToken], @"-]");
FSTAssertKeywordEquals([ts popToken], @"]");
FSTAssertKindOfClass([ts popToken], CPEOFToken);
} }


@end @end

0 comments on commit bedbfa2

Please sign in to comment.