1+ namespace KclLib . Tests ;
2+
3+ using KclLib . API ;
4+
5+ [ TestClass ]
6+ public class APITest
7+ {
8+ static string parentDirectory = FindCsprojInParentDirectory ( Environment . CurrentDirectory ) ;
9+
10+ [ TestMethod ]
11+ public void TestExecProgramAPI ( )
12+ {
13+ var api = new API ( ) ;
14+ var execArgs = new ExecProgram_Args ( ) ;
15+ var path = Path . Combine ( parentDirectory , "test_data" , "schema.k" ) ;
16+ execArgs . KFilenameList . Add ( path ) ;
17+ var result = api . ExecProgram ( execArgs ) ;
18+ Assert . AreEqual ( "app:\n replicas: 2" , result . YamlResult , result . ToString ( ) ) ;
19+ }
20+
21+ [ TestMethod ]
22+ public void TestExecProgramAPIFileNotFound ( )
23+ {
24+ var api = new API ( ) ;
25+ var execArgs = new ExecProgram_Args ( ) ;
26+ var path = Path . Combine ( parentDirectory , "test_data" , "file_not_found.k" ) ;
27+ execArgs . KFilenameList . Add ( path ) ;
28+ try
29+ {
30+ var result = api . ExecProgram ( execArgs ) ;
31+ Assert . Fail ( "No exception was thrown for non-existent file path" ) ;
32+ }
33+ catch ( Exception ex )
34+ {
35+ Assert . AreEqual ( true , ex . Message . Contains ( "ERROR" ) ) ;
36+ Assert . AreEqual ( true , ex . Message . Contains ( "Cannot find the kcl file" ) ) ;
37+ }
38+ }
39+
40+ [ TestMethod ]
41+ public void TestListVariablesAPI ( )
42+ {
43+ var api = new API ( ) ;
44+ var args = new ListVariables_Args ( ) ;
45+ var path = Path . Combine ( parentDirectory , "test_data" , "schema.k" ) ;
46+ args . Files . Add ( path ) ;
47+ var result = api . ListVariables ( args ) ;
48+ Assert . AreEqual ( "AppConfig {replicas = 2}" , result . Variables [ "app" ] . Variables [ 0 ] . Value , result . ToString ( ) ) ;
49+ }
50+
51+ static string FindCsprojInParentDirectory ( string directory )
52+ {
53+ string parentDirectory = Directory . GetParent ( directory ) . FullName ;
54+ string csprojFilePath = Directory . GetFiles ( parentDirectory , "*.csproj" ) . FirstOrDefault ( ) ;
55+
56+ if ( csprojFilePath != null )
57+ {
58+ return parentDirectory ;
59+ }
60+ else if ( parentDirectory == directory )
61+ {
62+ return null ;
63+ }
64+ else
65+ {
66+ return FindCsprojInParentDirectory ( parentDirectory ) ;
67+ }
68+ }
69+ }
0 commit comments