Fawkes API  Fawkes Development Version
test_skill_parser.cpp
1 /***************************************************************************
2  * test_skill_parser.cpp - Tests for ExecutionTimeEstimator::Skill
3  *
4  * Created: Sun 22 Dec 2019 19:23:47 CET 19:23
5  * Copyright 2019 Till Hofmann <hofmann@kbsg.rwth-aachen.de>
6  ****************************************************************************/
7 
8 /* This program is free software; you can redistribute it and/or modify
9  * it under the terms of the GNU General Public License as published by
10  * the Free Software Foundation; either version 2 of the License, or
11  * (at your option) any later version.
12  *
13  * This program is distributed in the hope that it will be useful,
14  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16  * GNU Library General Public License for more details.
17  *
18  * Read the full text in the LICENSE.GPL file in the doc directory.
19  */
20 
21 #include "../execution_time_estimator.h"
22 
23 #include <gtest/gtest.h>
24 
26 
27 TEST(SkillParserTest, EmptySkill)
28 {
29  Skill s{""};
30  ASSERT_EQ(s.skill_name, "");
31  ASSERT_EQ(s.skill_args.size(), 0);
32 }
33 
34 TEST(SkillParserTest, SkillWithoutArgs)
35 {
36  Skill s{"say()"};
37  ASSERT_EQ(s.skill_name, "say");
38  ASSERT_EQ(s.skill_args.size(), 0);
39 }
40 
41 TEST(SkillParserTest, SkillWithIntArg)
42 {
43  Skill s{"count{i=1}"};
44  ASSERT_EQ(s.skill_name, "count");
45  ASSERT_EQ(s.skill_args.size(), 1);
46  ASSERT_EQ(s.skill_args["i"], "1");
47 }
48 
49 TEST(SkillParserTest, SkillWithStringArg)
50 {
51  Skill s("say{text='hello'}");
52  ASSERT_EQ(s.skill_name, "say");
53  ASSERT_EQ(s.skill_args.size(), 1);
54  ASSERT_EQ(s.skill_args["text"], "hello");
55  s = Skill("say{text=\"hello\"}");
56  ASSERT_EQ(s.skill_name, "say");
57  ASSERT_EQ(s.skill_args.size(), 1);
58  ASSERT_EQ(s.skill_args["text"], "hello");
59 }
60 
61 TEST(SkillParserTest, SkillWithMultipleArgs)
62 {
63  Skill s("say{text='hello', second='bye'}");
64  ASSERT_EQ(s.skill_name, "say");
65  ASSERT_EQ(s.skill_args.size(), 2);
66  ASSERT_EQ(s.skill_args["text"], "hello");
67  ASSERT_EQ(s.skill_args["second"], "bye");
68 }
69 
70 TEST(SkillParserTest, SkillWithNewline)
71 {
72  Skill s("say{text=\n\"hello\"}");
73  ASSERT_EQ(s.skill_name, "say");
74  ASSERT_EQ(s.skill_args.size(), 1);
75  ASSERT_EQ(s.skill_args["text"], "hello");
76 }
fawkes::ExecutionTimeEstimator::Skill
A structured representation of a skill.
Definition: execution_time_estimator.h:39
Skill
Skill representation for JSON transfer.
Definition: Skill.h:29