Skip to content

Commit

Permalink
[LG] Remove dash in identifier to make sure arithmetic expressions ca…
Browse files Browse the repository at this point in the history
…n be parsed correctly (#2009)

* init

* fix template name in tests
cosmicshuai authored Apr 10, 2020

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature. The key has expired.
1 parent 4dd290c commit 0b24fa6
Showing 17 changed files with 346 additions and 335 deletions.
Original file line number Diff line number Diff line change
@@ -59,7 +59,7 @@ NUMBER : DIGIT + ( '.' DIGIT +)? ;

WHITESPACE : (' '|'\t'|'\ufeff'|'\u00a0') {this.ignoreWS}? -> skip;

IDENTIFIER : (LETTER | '_' | '#' | '@' | '@@' | '$' | '%') (LETTER | DIGIT | '-' | '_')*;
IDENTIFIER : (LETTER | '_' | '#' | '@' | '@@' | '$' | '%') (LETTER | DIGIT | '_')*;

NEWLINE : '\r'? '\n' -> skip;

Original file line number Diff line number Diff line change
@@ -181,42 +181,42 @@ export class ExpressionAntlrLexer extends Lexer {
"\x1C\x02\r\x1E\x02\x0E \x02\x0F\"\x02\x10$\x02\x11&\x02\x12(\x02\x13*" +
"\x02\x14,\x02\x15.\x02\x160\x02\x172\x02\x184\x02\x196\x02\x1A8\x02\x1B" +
":\x02\x1C<\x02\x1D>\x02\x1E@\x02\x1FB\x02 D\x02\x02F\x02!H\x02\"J\x02" +
"#\x04\x02\x03\r\x04\x02C\\c|\x03\x022;\x06\x02\v\v\"\"\xA2\xA2\uFF01\uFF01" +
"\x05\x02%%BBaa\x04\x02//aa\x04\x02))^^\x03\x02))\x04\x02$$^^\x03\x02$" +
"$\b\x02\f\f\x0F\x0F$$))}}\x7F\x7F\x04\x02\f\f\x0F\x0F\xFA\x02\b\x03\x02" +
"\x02\x02\x02\n\x03\x02\x02\x02\x02\f\x03\x02\x02\x02\x02\x0E\x03\x02\x02" +
"\x02\x02\x10\x03\x02\x02\x02\x02\x12\x03\x02\x02\x02\x02\x14\x03\x02\x02" +
"\x02\x02\x16\x03\x02\x02\x02\x02\x18\x03\x02\x02\x02\x02\x1A\x03\x02\x02" +
"\x02\x02\x1C\x03\x02\x02\x02\x02\x1E\x03\x02\x02\x02\x02 \x03\x02\x02" +
"\x02\x02\"\x03\x02\x02\x02\x02$\x03\x02\x02\x02\x02&\x03\x02\x02\x02\x02" +
"(\x03\x02\x02\x02\x02*\x03\x02\x02\x02\x02,\x03\x02\x02\x02\x02.\x03\x02" +
"\x02\x02\x020\x03\x02\x02\x02\x022\x03\x02\x02\x02\x024\x03\x02\x02\x02" +
"\x026\x03\x02\x02\x02\x028\x03\x02\x02\x02\x02:\x03\x02\x02\x02\x02<\x03" +
"\x02\x02\x02\x02>\x03\x02\x02\x02\x02@\x03\x02\x02\x02\x02B\x03\x02\x02" +
"\x02\x03D\x03\x02\x02\x02\x03F\x03\x02\x02\x02\x03H\x03\x02\x02\x02\x03" +
"J\x03\x02\x02\x02\x04L\x03\x02\x02\x02\x06N\x03\x02\x02\x02\bP\x03\x02" +
"\x02\x02\nU\x03\x02\x02\x02\fW\x03\x02\x02\x02\x0EY\x03\x02\x02\x02\x10" +
"[\x03\x02\x02\x02\x12]\x03\x02\x02\x02\x14_\x03\x02\x02\x02\x16a\x03\x02" +
"\x02\x02\x18c\x03\x02\x02\x02\x1Aj\x03\x02\x02\x02\x1Cl\x03\x02\x02\x02" +
"\x1En\x03\x02\x02\x02 q\x03\x02\x02\x02\"t\x03\x02\x02\x02$v\x03\x02\x02" +
"\x02&x\x03\x02\x02\x02({\x03\x02\x02\x02*~\x03\x02\x02\x02,\x80\x03\x02" +
"\x02\x02.\x82\x03\x02\x02\x020\x84\x03\x02\x02\x022\x86\x03\x02\x02\x02" +
"4\x88\x03\x02\x02\x026\x8B\x03\x02\x02\x028\x97\x03\x02\x02\x02:\xA1\x03" +
"\x02\x02\x02<\xAC\x03\x02\x02\x02>\xC6\x03\x02\x02\x02@\xC8\x03\x02\x02" +
"\x02B\xD1\x03\x02\x02\x02D\xD3\x03\x02\x02\x02F\xD9\x03\x02\x02\x02H\xE4" +
"\x03\x02\x02\x02J\xE8\x03\x02\x02\x02LM\t\x02\x02\x02M\x05\x03\x02\x02" +
"\x02NO\t\x03\x02\x02O\x07\x03\x02\x02\x02PQ\x07b\x02\x02QR\b\x04\x02\x02" +
"RS\x03\x02\x02\x02ST\b\x04\x03\x02T\t\x03\x02\x02\x02UV\x07-\x02\x02V" +
"\v\x03\x02\x02\x02WX\x07/\x02\x02X\r\x03\x02\x02\x02YZ\x07#\x02\x02Z\x0F" +
"\x03\x02\x02\x02[\\\x07`\x02\x02\\\x11\x03\x02\x02\x02]^\x07,\x02\x02" +
"^\x13\x03\x02\x02\x02_`\x071\x02\x02`\x15\x03\x02\x02\x02ab\x07\'\x02" +
"\x02b\x17\x03\x02\x02\x02cd\x07?\x02\x02de\x07?\x02\x02e\x19\x03\x02\x02" +
"\x02fg\x07#\x02\x02gk\x07?\x02\x02hi\x07>\x02\x02ik\x07@\x02\x02jf\x03" +
"\x02\x02\x02jh\x03\x02\x02\x02k\x1B\x03\x02\x02\x02lm\x07(\x02\x02m\x1D" +
"\x03\x02\x02\x02no\x07(\x02\x02op\x07(\x02\x02p\x1F\x03\x02\x02\x02qr" +
"\x07~\x02\x02rs\x07~\x02\x02s!\x03\x02\x02\x02tu\x07>\x02\x02u#\x03\x02" +
"\x02\x02vw\x07@\x02\x02w%\x03\x02\x02\x02xy\x07>\x02\x02yz\x07?\x02\x02" +
"z\'\x03\x02\x02\x02{|\x07@\x02\x02|}\x07?\x02\x02})\x03\x02\x02\x02~\x7F" +
"#\x04\x02\x03\f\x04\x02C\\c|\x03\x022;\x06\x02\v\v\"\"\xA2\xA2\uFF01\uFF01" +
"\x05\x02%%BBaa\x04\x02))^^\x03\x02))\x04\x02$$^^\x03\x02$$\b\x02\f\f\x0F" +
"\x0F$$))}}\x7F\x7F\x04\x02\f\f\x0F\x0F\xFA\x02\b\x03\x02\x02\x02\x02\n" +
"\x03\x02\x02\x02\x02\f\x03\x02\x02\x02\x02\x0E\x03\x02\x02\x02\x02\x10" +
"\x03\x02\x02\x02\x02\x12\x03\x02\x02\x02\x02\x14\x03\x02\x02\x02\x02\x16" +
"\x03\x02\x02\x02\x02\x18\x03\x02\x02\x02\x02\x1A\x03\x02\x02\x02\x02\x1C" +
"\x03\x02\x02\x02\x02\x1E\x03\x02\x02\x02\x02 \x03\x02\x02\x02\x02\"\x03" +
"\x02\x02\x02\x02$\x03\x02\x02\x02\x02&\x03\x02\x02\x02\x02(\x03\x02\x02" +
"\x02\x02*\x03\x02\x02\x02\x02,\x03\x02\x02\x02\x02.\x03\x02\x02\x02\x02" +
"0\x03\x02\x02\x02\x022\x03\x02\x02\x02\x024\x03\x02\x02\x02\x026\x03\x02" +
"\x02\x02\x028\x03\x02\x02\x02\x02:\x03\x02\x02\x02\x02<\x03\x02\x02\x02" +
"\x02>\x03\x02\x02\x02\x02@\x03\x02\x02\x02\x02B\x03\x02\x02\x02\x03D\x03" +
"\x02\x02\x02\x03F\x03\x02\x02\x02\x03H\x03\x02\x02\x02\x03J\x03\x02\x02" +
"\x02\x04L\x03\x02\x02\x02\x06N\x03\x02\x02\x02\bP\x03\x02\x02\x02\nU\x03" +
"\x02\x02\x02\fW\x03\x02\x02\x02\x0EY\x03\x02\x02\x02\x10[\x03\x02\x02" +
"\x02\x12]\x03\x02\x02\x02\x14_\x03\x02\x02\x02\x16a\x03\x02\x02\x02\x18" +
"c\x03\x02\x02\x02\x1Aj\x03\x02\x02\x02\x1Cl\x03\x02\x02\x02\x1En\x03\x02" +
"\x02\x02 q\x03\x02\x02\x02\"t\x03\x02\x02\x02$v\x03\x02\x02\x02&x\x03" +
"\x02\x02\x02({\x03\x02\x02\x02*~\x03\x02\x02\x02,\x80\x03\x02\x02\x02" +
".\x82\x03\x02\x02\x020\x84\x03\x02\x02\x022\x86\x03\x02\x02\x024\x88\x03" +
"\x02\x02\x026\x8B\x03\x02\x02\x028\x97\x03\x02\x02\x02:\xA1\x03\x02\x02" +
"\x02<\xAC\x03\x02\x02\x02>\xC6\x03\x02\x02\x02@\xC8\x03\x02\x02\x02B\xD1" +
"\x03\x02\x02\x02D\xD3\x03\x02\x02\x02F\xD9\x03\x02\x02\x02H\xE4\x03\x02" +
"\x02\x02J\xE8\x03\x02\x02\x02LM\t\x02\x02\x02M\x05\x03\x02\x02\x02NO\t" +
"\x03\x02\x02O\x07\x03\x02\x02\x02PQ\x07b\x02\x02QR\b\x04\x02\x02RS\x03" +
"\x02\x02\x02ST\b\x04\x03\x02T\t\x03\x02\x02\x02UV\x07-\x02\x02V\v\x03" +
"\x02\x02\x02WX\x07/\x02\x02X\r\x03\x02\x02\x02YZ\x07#\x02\x02Z\x0F\x03" +
"\x02\x02\x02[\\\x07`\x02\x02\\\x11\x03\x02\x02\x02]^\x07,\x02\x02^\x13" +
"\x03\x02\x02\x02_`\x071\x02\x02`\x15\x03\x02\x02\x02ab\x07\'\x02\x02b" +
"\x17\x03\x02\x02\x02cd\x07?\x02\x02de\x07?\x02\x02e\x19\x03\x02\x02\x02" +
"fg\x07#\x02\x02gk\x07?\x02\x02hi\x07>\x02\x02ik\x07@\x02\x02jf\x03\x02" +
"\x02\x02jh\x03\x02\x02\x02k\x1B\x03\x02\x02\x02lm\x07(\x02\x02m\x1D\x03" +
"\x02\x02\x02no\x07(\x02\x02op\x07(\x02\x02p\x1F\x03\x02\x02\x02qr\x07" +
"~\x02\x02rs\x07~\x02\x02s!\x03\x02\x02\x02tu\x07>\x02\x02u#\x03\x02\x02" +
"\x02vw\x07@\x02\x02w%\x03\x02\x02\x02xy\x07>\x02\x02yz\x07?\x02\x02z\'" +
"\x03\x02\x02\x02{|\x07@\x02\x02|}\x07?\x02\x02})\x03\x02\x02\x02~\x7F" +
"\x07*\x02\x02\x7F+\x03\x02\x02\x02\x80\x81\x07+\x02\x02\x81-\x03\x02\x02" +
"\x02\x82\x83\x070\x02\x02\x83/\x03\x02\x02\x02\x84\x85\x07]\x02\x02\x85" +
"1\x03\x02\x02\x02\x86\x87\x07_\x02\x02\x873\x03\x02\x02\x02\x88\x89\x07" +
@@ -231,35 +231,35 @@ export class ExpressionAntlrLexer extends Lexer {
"\x9E\x9F\x07B\x02\x02\x9F\xA2\x07B\x02\x02\xA0\xA2\x04&\'\x02\xA1\x9C" +
"\x03\x02\x02\x02\xA1\x9D\x03\x02\x02\x02\xA1\x9E\x03\x02\x02\x02\xA1\xA0" +
"\x03\x02\x02\x02\xA2\xA8\x03\x02\x02\x02\xA3\xA7\x05\x04\x02\x02\xA4\xA7" +
"\x05\x06\x03\x02\xA5\xA7\t\x06\x02\x02\xA6\xA3\x03\x02\x02\x02\xA6\xA4" +
"\x05\x06\x03\x02\xA5\xA7\x07a\x02\x02\xA6\xA3\x03\x02\x02\x02\xA6\xA4" +
"\x03\x02\x02\x02\xA6\xA5\x03\x02\x02\x02\xA7\xAA\x03\x02\x02\x02\xA8\xA6" +
"\x03\x02\x02\x02\xA8\xA9\x03\x02\x02\x02\xA9;\x03\x02\x02\x02\xAA\xA8" +
"\x03\x02\x02\x02\xAB\xAD\x07\x0F\x02\x02\xAC\xAB\x03\x02\x02\x02\xAC\xAD" +
"\x03\x02\x02\x02\xAD\xAE\x03\x02\x02\x02\xAE\xAF\x07\f\x02\x02\xAF\xB0" +
"\x03\x02\x02\x02\xB0\xB1\b\x1E\x04\x02\xB1=\x03\x02\x02\x02\xB2\xB8\x07" +
")\x02\x02\xB3\xB4\x07^\x02\x02\xB4\xB7\t\x07\x02\x02\xB5\xB7\n\b\x02\x02" +
"\xB6\xB3\x03\x02\x02\x02\xB6\xB5\x03\x02\x02\x02\xB7\xBA\x03\x02\x02\x02" +
"\xB8\xB9\x03\x02\x02\x02\xB8\xB6\x03\x02\x02\x02\xB9\xBB\x03\x02\x02\x02" +
"\xBA\xB8\x03\x02\x02\x02\xBB\xC7\x07)\x02\x02\xBC\xC2\x07$\x02\x02\xBD" +
"\xBE\x07^\x02\x02\xBE\xC1\t\t\x02\x02\xBF\xC1\n\n\x02\x02\xC0\xBD\x03" +
"\x02\x02\x02\xC0\xBF\x03\x02\x02\x02\xC1\xC4\x03\x02\x02\x02\xC2\xC3\x03" +
"\x02\x02\x02\xC2\xC0\x03\x02\x02\x02\xC3\xC5\x03\x02\x02\x02\xC4\xC2\x03" +
"\x02\x02\x02\xC5\xC7\x07$\x02\x02\xC6\xB2\x03\x02\x02\x02\xC6\xBC\x03" +
"\x02\x02\x02\xC7?\x03\x02\x02\x02\xC8\xCC\x07}\x02\x02\xC9\xCB\x058\x1C" +
"\x02\xCA\xC9\x03\x02\x02\x02\xCB\xCE\x03\x02\x02\x02\xCC\xCA\x03\x02\x02" +
"\x02\xCC\xCD\x03\x02\x02\x02\xCD\xCF\x03\x02\x02\x02\xCE\xCC\x03\x02\x02" +
"\x02\xCF\xD0\x07\x7F\x02\x02\xD0A\x03\x02\x02\x02\xD1\xD2\v\x02\x02\x02" +
"\xD2C\x03\x02\x02\x02\xD3\xD4\x07b\x02\x02\xD4\xD5\b\"\x05\x02\xD5\xD6" +
"\x03\x02\x02\x02\xD6\xD7\b\"\x06\x02\xD7\xD8\b\"\x07\x02\xD8E\x03\x02" +
"\x02\x02\xD9\xDA\x07&\x02\x02\xDA\xDF\x07}\x02\x02\xDB\xDE\x05>\x1F\x02" +
"\xDC\xDE\n\v\x02\x02\xDD\xDB\x03\x02\x02\x02\xDD\xDC\x03\x02\x02\x02\xDE" +
"\xE1\x03\x02\x02\x02\xDF\xE0\x03\x02\x02\x02\xDF\xDD\x03\x02\x02\x02\xE0" +
"\xE2\x03\x02\x02\x02\xE1\xDF\x03\x02\x02\x02\xE2\xE3\x07\x7F\x02\x02\xE3" +
"G\x03\x02\x02\x02\xE4\xE6\x07^\x02\x02\xE5\xE7\n\f\x02\x02\xE6\xE5\x03" +
"\x02\x02\x02\xE6\xE7\x03\x02\x02\x02\xE7I\x03\x02\x02\x02\xE8\xE9\n\f" +
"\x02\x02\xE9K\x03\x02\x02\x02\x15\x02\x03j\x8D\x93\x95\xA1\xA6\xA8\xAC" +
"\xB6\xB8\xC0\xC2\xC6\xCC\xDD\xDF\xE6\b\x03\x04\x02\x07\x03\x02\b\x02\x02" +
"\x03\"\x03\t\x03\x02\x06\x02\x02";
")\x02\x02\xB3\xB4\x07^\x02\x02\xB4\xB7\t\x06\x02\x02\xB5\xB7\n\x07\x02" +
"\x02\xB6\xB3\x03\x02\x02\x02\xB6\xB5\x03\x02\x02\x02\xB7\xBA\x03\x02\x02" +
"\x02\xB8\xB9\x03\x02\x02\x02\xB8\xB6\x03\x02\x02\x02\xB9\xBB\x03\x02\x02" +
"\x02\xBA\xB8\x03\x02\x02\x02\xBB\xC7\x07)\x02\x02\xBC\xC2\x07$\x02\x02" +
"\xBD\xBE\x07^\x02\x02\xBE\xC1\t\b\x02\x02\xBF\xC1\n\t\x02\x02\xC0\xBD" +
"\x03\x02\x02\x02\xC0\xBF\x03\x02\x02\x02\xC1\xC4\x03\x02\x02\x02\xC2\xC3" +
"\x03\x02\x02\x02\xC2\xC0\x03\x02\x02\x02\xC3\xC5\x03\x02\x02\x02\xC4\xC2" +
"\x03\x02\x02\x02\xC5\xC7\x07$\x02\x02\xC6\xB2\x03\x02\x02\x02\xC6\xBC" +
"\x03\x02\x02\x02\xC7?\x03\x02\x02\x02\xC8\xCC\x07}\x02\x02\xC9\xCB\x05" +
"8\x1C\x02\xCA\xC9\x03\x02\x02\x02\xCB\xCE\x03\x02\x02\x02\xCC\xCA\x03" +
"\x02\x02\x02\xCC\xCD\x03\x02\x02\x02\xCD\xCF\x03\x02\x02\x02\xCE\xCC\x03" +
"\x02\x02\x02\xCF\xD0\x07\x7F\x02\x02\xD0A\x03\x02\x02\x02\xD1\xD2\v\x02" +
"\x02\x02\xD2C\x03\x02\x02\x02\xD3\xD4\x07b\x02\x02\xD4\xD5\b\"\x05\x02" +
"\xD5\xD6\x03\x02\x02\x02\xD6\xD7\b\"\x06\x02\xD7\xD8\b\"\x07\x02\xD8E" +
"\x03\x02\x02\x02\xD9\xDA\x07&\x02\x02\xDA\xDF\x07}\x02\x02\xDB\xDE\x05" +
">\x1F\x02\xDC\xDE\n\n\x02\x02\xDD\xDB\x03\x02\x02\x02\xDD\xDC\x03\x02" +
"\x02\x02\xDE\xE1\x03\x02\x02\x02\xDF\xE0\x03\x02\x02\x02\xDF\xDD\x03\x02" +
"\x02\x02\xE0\xE2\x03\x02\x02\x02\xE1\xDF\x03\x02\x02\x02\xE2\xE3\x07\x7F" +
"\x02\x02\xE3G\x03\x02\x02\x02\xE4\xE6\x07^\x02\x02\xE5\xE7\n\v\x02\x02" +
"\xE6\xE5\x03\x02\x02\x02\xE6\xE7\x03\x02\x02\x02\xE7I\x03\x02\x02\x02" +
"\xE8\xE9\n\v\x02\x02\xE9K\x03\x02\x02\x02\x15\x02\x03j\x8D\x93\x95\xA1" +
"\xA6\xA8\xAC\xB6\xB8\xC0\xC2\xC6\xCC\xDD\xDF\xE6\b\x03\x04\x02\x07\x03" +
"\x02\b\x02\x02\x03\"\x03\t\x03\x02\x06\x02\x02";
public static __ATN: ATN;
public static get _ATN(): ATN {
if (!ExpressionAntlrLexer.__ATN) {
8 changes: 8 additions & 0 deletions libraries/adaptive-expressions/tests/expressionParser.test.js
Original file line number Diff line number Diff line change
@@ -41,6 +41,12 @@ const dataSource = [

// Operators tests

['user.income-user.outcome', -10.0],
['user.income - user.outcome', -10.0],
['user.income!=user.outcome', true],
['user.income != user.outcome', true],
['user.income==user.outcome', false],
['user.income == user.outcome', false],
['1 + 2', 3],
['1 +\n 2', 3],
['1 \n+ 2', 3],
@@ -654,6 +660,8 @@ const scope = {
unixTimestamp: 1521118800,
user:
{
income: 110.0,
outcome: 120.0,
nickname:'John',
lists:
{
16 changes: 8 additions & 8 deletions libraries/botbuilder-dialogs-adaptive/tests/lg/test.en.lg
Original file line number Diff line number Diff line change
@@ -1,26 +1,26 @@
# test
- english

# tag1-test2
# tag1_test2
- tag1 test2

# tag1-test
# tag1_test
- tag1 test

# tag2-test
# tag2_test
- tag2 test

# x-property
# x_property
- test x

# y-property
# y_property
- test y

# z-property
# z_property
- test z

# tag2-y-property
# tag2_y_property
- test tag2 y

# x-property2
# x_property2
- test2 x
2 changes: 1 addition & 1 deletion libraries/botbuilder-lg/src/LGFileLexer.g4
Original file line number Diff line number Diff line change
@@ -99,7 +99,7 @@ NEWLINE_IN_NAME
;
IDENTIFIER
: (LETTER | NUMBER | '_') (LETTER | NUMBER | '-' | '_')*
: (LETTER | NUMBER | '_') (LETTER | NUMBER | '_')*
;
DOT
477 changes: 238 additions & 239 deletions libraries/botbuilder-lg/src/generated/LGFileLexer.ts

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion libraries/botbuilder-lg/src/templates.ts
Original file line number Diff line number Diff line change
@@ -223,7 +223,7 @@ export class Templates implements Iterable<Template> {
this.checkErrors();

// wrap inline string with "# name and -" to align the evaluation process
const fakeTemplateId = TemplateExtensions.newGuid();
const fakeTemplateId = '__temp__';
const multiLineMark = '```';

inlineStr = !(inlineStr.trim().startsWith(multiLineMark) && inlineStr.includes('\n'))
16 changes: 8 additions & 8 deletions libraries/botbuilder-lg/tests/lg.test.js
Original file line number Diff line number Diff line change
@@ -31,26 +31,26 @@ describe('LG', function() {
let templates = Templates.parseFile(GetExampleFilePath('3.lg'));
console.log(templates.toArray()[0].body);
console.log(templates.toArray()[1].body);
let evaled = templates.evaluate('welcome-user', undefined);
let evaled = templates.evaluate('welcome_user', undefined);
const options = ['Hi', 'Hello', 'Hiya', 'Hi :)', 'Hello :)', 'Hiya :)'];
assert.strictEqual(options.includes(evaled), true, `The result ${ evaled } is not in those options [${ options.join(',') }]`);
});

it('TestBasicTemplateRefAndEntityRef', function() {
let templates = Templates.parseFile(GetExampleFilePath('4.lg'));
let userName = 'DL';
let evaled = templates.evaluate('welcome-user', { userName: userName });
let evaled = templates.evaluate('welcome_user', { userName: userName });
const options = ['Hi', 'Hello', 'Hiya ', 'Hi :)', 'Hello :)', 'Hiya :)'];
assert.strictEqual(evaled.includes(userName), true, `The result ${ evaled } does not contiain ${ userName }`);
});

it('TestBasicConditionalTemplate', function() {
let templates = Templates.parseFile(GetExampleFilePath('5.lg'));

let evaled = templates.evaluate('time-of-day-readout', { timeOfDay: 'morning' });
let evaled = templates.evaluate('time_of_day_readout', { timeOfDay: 'morning' });
assert.strictEqual(evaled === 'Good morning' || evaled === 'Morning! ', true, `Evaled is ${ evaled }`);

evaled = templates.evaluate('time-of-day-readout', { timeOfDay: 'evening' });
evaled = templates.evaluate('time_of_day_readout', { timeOfDay: 'evening' });
assert.strictEqual(evaled === 'Good evening' || evaled === 'Evening! ', true, `Evaled is ${ evaled }`);
});

@@ -72,13 +72,13 @@ describe('LG', function() {
it('TestBasicConditionalTemplateWithoutDefault', function() {
let templates = Templates.parseFile(GetExampleFilePath('5.lg'));

let evaled = templates.evaluate('time-of-day-readout-without-default', { timeOfDay: 'morning' });
let evaled = templates.evaluate('time_of_day_readout_without_default', { timeOfDay: 'morning' });
assert.strictEqual(evaled === 'Good morning' || evaled === 'Morning! ', true, `Evaled is ${ evaled }`);

evaled = templates.evaluate('time-of-day-readout-without-default2', { timeOfDay: 'morning' });
evaled = templates.evaluate('time_of_day_readout_without_default2', { timeOfDay: 'morning' });
assert.strictEqual(evaled === 'Good morning' || evaled === 'Morning! ', true, `Evaled is ${ evaled }`);

evaled = templates.evaluate('time-of-day-readout-without-default2', { timeOfDay: 'evening' });
evaled = templates.evaluate('time_of_day_readout_without_default2', { timeOfDay: 'evening' });
assert.strictEqual(evaled, undefined, `Evaled is ${ evaled } which should be undefined.`);
});

@@ -268,7 +268,7 @@ describe('LG', function() {
templateRefOptions: ['template2', 'template3', 'template4', 'template5', 'template6']
},
{
name: 'coffee-to-go-order',
name: 'coffee_to_go_order',
variableOptions: ['coffee', 'userName', 'size', 'price'],
templateRefOptions: ['wPhrase', 'LatteOrderConfirmation', 'MochaOrderConfirmation', 'CuppuccinoOrderConfirmation']
},
6 changes: 3 additions & 3 deletions libraries/botbuilder-lg/tests/lgDiagnostic.test.js
Original file line number Diff line number Diff line change
@@ -107,7 +107,7 @@ describe(`LGExceptionTest`, function() {
it(`TestErrorTemplateName`, function() {
var diagnostics = GetDiagnostics(`ErrorTemplateName.lg`);

assert.strictEqual(5, diagnostics.length);
assert.strictEqual(6, diagnostics.length);
for(const diagnostic of diagnostics)
{
assert.strictEqual(DiagnosticSeverity.Error, diagnostic.severity);
@@ -203,9 +203,9 @@ describe(`LGExceptionTest`, function() {
it(`TestLoopDetected`, function() {
var templates = GetLGFile(`LoopDetected.lg`);

assert.throws(() => templates.evaluate(`wPhrase`), Error(`Loop detected: welcome-user => wPhrase [wPhrase] Error occurred when evaluating '-\${wPhrase()}'. [welcome-user] Error occurred when evaluating '-\${welcome-user()}'.`));
assert.throws(() => templates.evaluate(`wPhrase`), Error(`Loop detected: welcome_user => wPhrase [wPhrase] Error occurred when evaluating '-\${wPhrase()}'. [welcome_user] Error occurred when evaluating '-\${welcome_user()}'.`));

assert.throws(() => templates.analyzeTemplate(`wPhrase`), Error('Loop detected: welcome-user => wPhrase'),);
assert.throws(() => templates.analyzeTemplate(`wPhrase`), Error('Loop detected: welcome_user => wPhrase'),);
});

it(`AddTextWithWrongId`, function() {
2 changes: 1 addition & 1 deletion libraries/botbuilder-lg/tests/testData/examples/3.lg
Original file line number Diff line number Diff line change
@@ -7,7 +7,7 @@

> Using a template in another template
> Sometimes the bot will say 'Hi' and other times it will say 'Hi :)'
# welcome-user()
# welcome_user()
- ${wPhrase()}
- ${wPhrase()} :)

2 changes: 1 addition & 1 deletion libraries/botbuilder-lg/tests/testData/examples/4.lg
Original file line number Diff line number Diff line change
@@ -12,6 +12,6 @@
- ${wPhrase()} :)

> Using entity references. Unless explicitly specified, entities default to string. Valid types are String, Int, Long, Float, Double, Bool, DateTime
# welcome-user
# welcome_user
- ${wPhrase()} ${userName}
- ${wPhrase()} ${userName} :)
10 changes: 5 additions & 5 deletions libraries/botbuilder-lg/tests/testData/examples/5.lg
Original file line number Diff line number Diff line change
@@ -7,19 +7,19 @@

> Using a template in another template
> Sometimes the bot will say 'Hi' and other times it will say 'Hi :)'
# welcome-user
# welcome_user
- ${wPhrase()}
- ${wPhrase()} :)

> Using entity references
# welcome-user2
# welcome_user2
- ${wPhrase()}
- ${wPhrase()} ${userName}
- ${wPhrase()} ${userName} :)

> Conditional response template
> Outer list is condition expression; L2 list is one-of collection
# time-of-day-readout
# time_of_day_readout
- IF: ${timeOfDay == 'morning'}
- Good morning
- Morning!
@@ -29,7 +29,7 @@

> Conditional response template
> Outer list is condition expression; L2 list is one-of collection
# time-of-day-readout-without-default
# time_of_day_readout_without_default
- IF: ${timeOfDay == 'morning'}
- Good morning
- Morning!
@@ -39,7 +39,7 @@

> Conditional response template
> Outer list is condition expression; L2 list is one-of collection
# time-of-day-readout-without-default2
# time_of_day_readout_without_default2
- IF: ${timeOfDay == 'morning'}
- Good morning
- Morning!
6 changes: 3 additions & 3 deletions libraries/botbuilder-lg/tests/testData/examples/6.lg
Original file line number Diff line number Diff line change
@@ -7,15 +7,15 @@

> Using a template in another template
> Sometimes the bot will say 'Hi' and other times it will say 'Hi :)'
# welcome-user(userName)
# welcome_user(userName)
- ${wPhrase()} ${userName} :)

> Using entity references
# welcome
- IF: ${userName}
- ${welcome-user(userName)}
- ${welcome_user(userName)}
- ELSE:
- ${welcome-user('DongLei')}
- ${welcome_user('DongLei')}



2 changes: 1 addition & 1 deletion libraries/botbuilder-lg/tests/testData/examples/7.lg
Original file line number Diff line number Diff line change
@@ -5,6 +5,6 @@

> Using a template in another template
> Sometimes the bot will say 'Hi' and other times it will say 'Hi :)'
# welcome-user
# welcome_user
- [wPhrase]

Original file line number Diff line number Diff line change
@@ -42,7 +42,7 @@ ${city} ${template5()}
# CuppuccinoOrderConfirmation
-Here is your ${size} Cuppuccino. You need to pay ${price} dollars! Thank you!

# coffee-to-go-order
# coffee_to_go_order
-SWITCH:${coffee}
- CASE: ${'Latte'}
- ${wPhrase()} ${LatteOrderConfirmation()}
Original file line number Diff line number Diff line change
@@ -18,3 +18,7 @@
# t2($%^)
- hi

> Template name can not contain '-'
# t2-t1
- hi

Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
> Welcome Phrase template
> LG runtime will pick a text value from the one-of collection list at random.
# wPhrase
- ${welcome-user()}
- ${welcome_user()}

> Using a template in another template
> Sometimes the bot will say 'Hi' and other times it will say 'Hi :)'
# welcome-user
# welcome_user
- ${wPhrase()}

0 comments on commit 0b24fa6

Please sign in to comment.