@testgorilla/tgo-coding-test 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (163) hide show
  1. package/.eslintrc.json +45 -0
  2. package/README.md +257 -0
  3. package/jest.config.ts +21 -0
  4. package/ng-package.json +14 -0
  5. package/package.json +33 -0
  6. package/project.json +36 -0
  7. package/src/assets/i18n/en.json +124 -0
  8. package/src/index.ts +30 -0
  9. package/src/lib/components/.gitkeep +0 -0
  10. package/src/lib/components/code-editor/code-editor.component.html +10 -0
  11. package/src/lib/components/code-editor/code-editor.component.scss +21 -0
  12. package/src/lib/components/code-editor/code-editor.component.spec.ts +136 -0
  13. package/src/lib/components/code-editor/code-editor.component.ts +369 -0
  14. package/src/lib/components/code-editor/code-editor.mocks.ts +28 -0
  15. package/src/lib/components/code-editor/code-editor.service.spec.ts +160 -0
  16. package/src/lib/components/code-editor/code-editor.service.ts +94 -0
  17. package/src/lib/components/code-editor/helpers/c-helper.spec.ts +39 -0
  18. package/src/lib/components/code-editor/helpers/c-helper.ts +51 -0
  19. package/src/lib/components/code-editor/helpers/code-editor-helper.base.spec.ts +30 -0
  20. package/src/lib/components/code-editor/helpers/code-editor-helper.base.ts +16 -0
  21. package/src/lib/components/code-editor/helpers/code-editor-helper.mocks.ts +24 -0
  22. package/src/lib/components/code-editor/helpers/code-editor-helper.model.ts +67 -0
  23. package/src/lib/components/code-editor/helpers/cpp-helper.spec.ts +40 -0
  24. package/src/lib/components/code-editor/helpers/cpp-helper.ts +52 -0
  25. package/src/lib/components/code-editor/helpers/csharp-helper.spec.ts +42 -0
  26. package/src/lib/components/code-editor/helpers/csharp-helper.ts +55 -0
  27. package/src/lib/components/code-editor/helpers/go-helper.spec.ts +41 -0
  28. package/src/lib/components/code-editor/helpers/go-helper.ts +54 -0
  29. package/src/lib/components/code-editor/helpers/index.ts +15 -0
  30. package/src/lib/components/code-editor/helpers/java-helper.spec.ts +41 -0
  31. package/src/lib/components/code-editor/helpers/java-helper.ts +54 -0
  32. package/src/lib/components/code-editor/helpers/javascript-helper.spec.ts +39 -0
  33. package/src/lib/components/code-editor/helpers/javascript-helper.ts +32 -0
  34. package/src/lib/components/code-editor/helpers/kotlin-helper.spec.ts +41 -0
  35. package/src/lib/components/code-editor/helpers/kotlin-helper.ts +54 -0
  36. package/src/lib/components/code-editor/helpers/php-helper.spec.ts +39 -0
  37. package/src/lib/components/code-editor/helpers/php-helper.ts +32 -0
  38. package/src/lib/components/code-editor/helpers/python-helper.spec.ts +39 -0
  39. package/src/lib/components/code-editor/helpers/python-helper.ts +32 -0
  40. package/src/lib/components/code-editor/helpers/r-helper.spec.ts +39 -0
  41. package/src/lib/components/code-editor/helpers/r-helper.ts +32 -0
  42. package/src/lib/components/code-editor/helpers/ruby-helper.spec.ts +39 -0
  43. package/src/lib/components/code-editor/helpers/ruby-helper.ts +32 -0
  44. package/src/lib/components/code-editor/helpers/scala-helper.spec.ts +41 -0
  45. package/src/lib/components/code-editor/helpers/scala-helper.ts +53 -0
  46. package/src/lib/components/code-editor/helpers/sql-helper.spec.ts +87 -0
  47. package/src/lib/components/code-editor/helpers/sql-helper.ts +44 -0
  48. package/src/lib/components/code-editor/helpers/swift-helper.spec.ts +40 -0
  49. package/src/lib/components/code-editor/helpers/swift-helper.ts +51 -0
  50. package/src/lib/components/code-editor/helpers/typescript-helper.spec.ts +40 -0
  51. package/src/lib/components/code-editor/helpers/typescript-helper.ts +52 -0
  52. package/src/lib/components/code-editor/models/code-editor.model.ts +9 -0
  53. package/src/lib/components/code-editor/models/coding-snapshot.model.ts +4 -0
  54. package/src/lib/components/coding-question/coding-question.component.html +78 -0
  55. package/src/lib/components/coding-question/coding-question.component.scss +76 -0
  56. package/src/lib/components/coding-question/coding-question.component.spec.ts +85 -0
  57. package/src/lib/components/coding-question/coding-question.component.ts +102 -0
  58. package/src/lib/components/coding-section/coding-section.component.html +82 -0
  59. package/src/lib/components/coding-section/coding-section.component.scss +64 -0
  60. package/src/lib/components/coding-section/coding-section.component.spec.ts +257 -0
  61. package/src/lib/components/coding-section/coding-section.component.ts +187 -0
  62. package/src/lib/components/coding-test.module.ts +124 -0
  63. package/src/lib/components/common/truncated-text/truncated-text.component.html +6 -0
  64. package/src/lib/components/common/truncated-text/truncated-text.component.scss +18 -0
  65. package/src/lib/components/common/truncated-text/truncated-text.component.spec.ts +84 -0
  66. package/src/lib/components/common/truncated-text/truncated-text.component.ts +37 -0
  67. package/src/lib/components/configurations/configurations.component.html +57 -0
  68. package/src/lib/components/configurations/configurations.component.scss +42 -0
  69. package/src/lib/components/configurations/configurations.component.spec.ts +186 -0
  70. package/src/lib/components/configurations/configurations.component.ts +98 -0
  71. package/src/lib/components/instructions/instructions.component.html +41 -0
  72. package/src/lib/components/instructions/instructions.component.scss +167 -0
  73. package/src/lib/components/instructions/instructions.component.spec.ts +106 -0
  74. package/src/lib/components/instructions/instructions.component.ts +138 -0
  75. package/src/lib/components/panel/panel.component.html +19 -0
  76. package/src/lib/components/panel/panel.component.scss +41 -0
  77. package/src/lib/components/panel/panel.component.spec.ts +40 -0
  78. package/src/lib/components/panel/panel.component.ts +34 -0
  79. package/src/lib/components/runnable-editor/runnable-editor.component.html +75 -0
  80. package/src/lib/components/runnable-editor/runnable-editor.component.scss +55 -0
  81. package/src/lib/components/runnable-editor/runnable-editor.component.spec.ts +124 -0
  82. package/src/lib/components/runnable-editor/runnable-editor.component.ts +155 -0
  83. package/src/lib/components/tests/test-cases/test-cases.component.html +135 -0
  84. package/src/lib/components/tests/test-cases/test-cases.component.scss +220 -0
  85. package/src/lib/components/tests/test-cases/test-cases.component.spec.ts +401 -0
  86. package/src/lib/components/tests/test-cases/test-cases.component.ts +205 -0
  87. package/src/lib/components/tests/test-cases-content/test-cases-content.component.html +94 -0
  88. package/src/lib/components/tests/test-cases-content/test-cases-content.component.scss +103 -0
  89. package/src/lib/components/tests/test-cases-content/test-cases-content.component.spec.ts +122 -0
  90. package/src/lib/components/tests/test-cases-content/test-cases-content.component.ts +102 -0
  91. package/src/lib/components/tests/test-cases-status/test-cases-status.component.html +16 -0
  92. package/src/lib/components/tests/test-cases-status/test-cases-status.component.scss +49 -0
  93. package/src/lib/components/tests/test-cases-status/test-cases-status.component.spec.ts +22 -0
  94. package/src/lib/components/tests/test-cases-status/test-cases-status.component.ts +18 -0
  95. package/src/lib/components/tests/test-results.component.html +119 -0
  96. package/src/lib/components/tests/test-results.component.scss +189 -0
  97. package/src/lib/components/tests/test-results.component.spec.ts +140 -0
  98. package/src/lib/components/tests/test-results.component.ts +98 -0
  99. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.html +96 -0
  100. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.scss +6 -0
  101. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.spec.ts +599 -0
  102. package/src/lib/components/tgo-coding-test/tgo-coding-test.component.ts +279 -0
  103. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.html +36 -0
  104. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.scss +183 -0
  105. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.spec.ts +883 -0
  106. package/src/lib/components/tgo-coding-test-candidate-view/tgo-coding-test-candidate-view.component.ts +575 -0
  107. package/src/lib/config/index.ts +3 -0
  108. package/src/lib/config/tgo-coding-test.config.ts +26 -0
  109. package/src/lib/config/tgo-coding-test.provider.ts +38 -0
  110. package/src/lib/config/tgo-coding-test.token.ts +21 -0
  111. package/src/lib/models/.gitkeep +0 -0
  112. package/src/lib/models/auto-saved-data.ts +51 -0
  113. package/src/lib/models/code-event.ts +17 -0
  114. package/src/lib/models/coderunner-execution-results.ts +58 -0
  115. package/src/lib/models/coding-lib.mocks.ts +246 -0
  116. package/src/lib/models/configs.ts +18 -0
  117. package/src/lib/models/language-change-action.ts +4 -0
  118. package/src/lib/models/lat-languages.ts +12 -0
  119. package/src/lib/models/mixpanel-events.ts +3 -0
  120. package/src/lib/models/mode.ts +5 -0
  121. package/src/lib/models/paste-data.ts +4 -0
  122. package/src/lib/models/programming-language.ts +9 -0
  123. package/src/lib/models/test-cases.ts +74 -0
  124. package/src/lib/models/theme.ts +5 -0
  125. package/src/lib/models/translations.ts +1 -0
  126. package/src/lib/models/view-mode.ts +6 -0
  127. package/src/lib/pipes/memoize-func.pipe.ts +34 -0
  128. package/src/lib/services/.gitkeep +0 -0
  129. package/src/lib/services/candidate-coding-test-services/candidature-api.service.spec.ts +40 -0
  130. package/src/lib/services/candidate-coding-test-services/candidature-api.service.ts +15 -0
  131. package/src/lib/services/candidate-coding-test-services/coderunner-api.service.spec.ts +134 -0
  132. package/src/lib/services/candidate-coding-test-services/coderunner-api.service.ts +105 -0
  133. package/src/lib/services/candidate-coding-test-services/coding-test-tour.service.spec.ts +161 -0
  134. package/src/lib/services/candidate-coding-test-services/coding-test-tour.service.ts +100 -0
  135. package/src/lib/services/candidate-coding-test-services/coding-test.service.spec.ts +1524 -0
  136. package/src/lib/services/candidate-coding-test-services/coding-test.service.ts +843 -0
  137. package/src/lib/services/candidate-coding-test-services/index.ts +4 -0
  138. package/src/lib/services/coding-test-config.service.ts +48 -0
  139. package/src/lib/services/configurations.service.mocks.ts +77 -0
  140. package/src/lib/services/configurations.service.spec.ts +79 -0
  141. package/src/lib/services/configurations.service.ts +111 -0
  142. package/src/lib/services/index.ts +0 -0
  143. package/src/lib/services/lib-coding-test.service.spec.ts +265 -0
  144. package/src/lib/services/lib-coding-test.service.ts +157 -0
  145. package/src/lib/services/local-storage.service.mocks.ts +22 -0
  146. package/src/lib/services/storage.service.spec.ts +1120 -0
  147. package/src/lib/services/storage.service.ts +729 -0
  148. package/src/lib/services/test-cases.service.spec.ts +53 -0
  149. package/src/lib/services/test-cases.service.ts +29 -0
  150. package/src/lib/services/theme.service.spec.ts +76 -0
  151. package/src/lib/services/theme.service.ts +34 -0
  152. package/src/lib/styles/mixins.scss +86 -0
  153. package/src/lib/styles/styles.scss +112 -0
  154. package/src/lib/styles/variables.scss +105 -0
  155. package/src/lib/utils/.gitkeep +0 -0
  156. package/src/lib/utils/additional-languages/erlang.ts +115 -0
  157. package/src/lib/utils/resize-element.ts +15 -0
  158. package/src/lib/utils/time-to-ms.util.ts +10 -0
  159. package/src/test-setup.ts +1 -0
  160. package/tsconfig.json +16 -0
  161. package/tsconfig.lib.json +12 -0
  162. package/tsconfig.lib.prod.json +9 -0
  163. package/tsconfig.spec.json +13 -0
@@ -0,0 +1,94 @@
1
+ import { Injectable } from '@angular/core';
2
+ import {
3
+ CodeEditorCHelper,
4
+ CodeEditorCppHelper,
5
+ CodeEditorCSharpHelper,
6
+ CodeEditorGoHelper,
7
+ CodeEditorJavaHelper,
8
+ CodeEditorJavascriptHelper,
9
+ CodeEditorKotlinHelper,
10
+ CodeEditorPhpHelper,
11
+ CodeEditorPythonHelper,
12
+ CodeEditorRHelper,
13
+ CodeEditorRubyHelper,
14
+ CodeEditorScalaHelper,
15
+ CodeEditorSqlHelper,
16
+ CodeEditorSwiftHelper,
17
+ CodeEditorTypescriptHelper,
18
+ } from './helpers';
19
+ import {
20
+ CodeEditorFuncOptions,
21
+ CodeEditorHelper,
22
+ CodeEditorLanguages,
23
+ } from './helpers/code-editor-helper.model';
24
+
25
+ @Injectable({
26
+ providedIn: 'root',
27
+ })
28
+ export class CodeEditorService {
29
+ private helper: CodeEditorHelper;
30
+
31
+ setHelper(language: string, funcParams: CodeEditorFuncOptions): void {
32
+ this.helper = this.createHelper(language, funcParams);
33
+ }
34
+
35
+ getInitCode(): string {
36
+ return this.helper.getInitCode();
37
+ }
38
+
39
+ getEditorLang(): string {
40
+ return this.helper.getEditorLang();
41
+ }
42
+
43
+ private createHelper(lang: string, funcParams: CodeEditorFuncOptions): CodeEditorHelper {
44
+ // todo: review this logic according to new TAT, remove generated init code if not needed ?
45
+ switch (lang as CodeEditorLanguages) {
46
+ case CodeEditorLanguages.Javascript:
47
+ return new CodeEditorJavascriptHelper(funcParams);
48
+ case CodeEditorLanguages.Typescript:
49
+ return new CodeEditorTypescriptHelper(funcParams);
50
+ case CodeEditorLanguages.Php:
51
+ return new CodeEditorPhpHelper(funcParams);
52
+ case CodeEditorLanguages.Python:
53
+ return new CodeEditorPythonHelper(funcParams);
54
+ case CodeEditorLanguages.Java:
55
+ return new CodeEditorJavaHelper(funcParams);
56
+ case CodeEditorLanguages.Ruby:
57
+ return new CodeEditorRubyHelper(funcParams);
58
+ case CodeEditorLanguages.C:
59
+ return new CodeEditorCHelper(funcParams);
60
+ case CodeEditorLanguages.Cpp:
61
+ return new CodeEditorCppHelper(funcParams);
62
+ case CodeEditorLanguages.R:
63
+ return new CodeEditorRHelper(funcParams);
64
+ case CodeEditorLanguages.Scala:
65
+ return new CodeEditorScalaHelper(funcParams);
66
+ case CodeEditorLanguages.CSharp:
67
+ case CodeEditorLanguages.CSharpLegacy:
68
+ return new CodeEditorCSharpHelper(funcParams);
69
+ case CodeEditorLanguages.Go:
70
+ return new CodeEditorGoHelper(funcParams);
71
+ case CodeEditorLanguages.Sql:
72
+ case CodeEditorLanguages.Sqlite:
73
+ return new CodeEditorSqlHelper(funcParams);
74
+ default: {
75
+ const versionedHelper = lang && this.getVersionedHelper(lang, funcParams);
76
+
77
+ if (!versionedHelper) {
78
+ throw new Error(`language ${lang} is not supported`);
79
+ }
80
+
81
+ return versionedHelper;
82
+ }
83
+ }
84
+ }
85
+
86
+ private getVersionedHelper(lang: string, funcParams: CodeEditorFuncOptions): CodeEditorHelper {
87
+ if (lang.startsWith(CodeEditorLanguages.Kotlin)) {
88
+ return new CodeEditorKotlinHelper(funcParams);
89
+ }
90
+ if (lang.startsWith(CodeEditorLanguages.Swift)) {
91
+ return new CodeEditorSwiftHelper(funcParams);
92
+ }
93
+ }
94
+ }
@@ -0,0 +1,39 @@
1
+ import { CodeEditorCHelper } from './c-helper';
2
+ import { defaultFuncParams } from './code-editor-helper.mocks';
3
+
4
+ describe('CodeEditorCHelper', () => {
5
+ let helper: CodeEditorCHelper;
6
+
7
+ const defaultParams = { ...defaultFuncParams };
8
+ const correctFuncOpening =
9
+ 'bool mockFunction(bool param1, int param2, double param3, float param4, char * param5, bool * param6, int * param7, float * param8) {\n';
10
+ const correctInitCode = `${correctFuncOpening}\t //Insert your code here \n}`;
11
+
12
+ beforeEach(() => {
13
+ helper = new CodeEditorCHelper(defaultParams);
14
+ });
15
+
16
+ describe('when getting init code', () => {
17
+ let result: string;
18
+
19
+ beforeEach(() => {
20
+ result = helper.getInitCode();
21
+ });
22
+
23
+ it('should return proper init code', () => {
24
+ expect(result).toEqual(correctInitCode);
25
+ });
26
+ });
27
+
28
+ describe('when getting func opening', () => {
29
+ let result: string;
30
+
31
+ beforeEach(() => {
32
+ result = helper.getFunctionOpening();
33
+ });
34
+
35
+ it('should return proper func opening', () => {
36
+ expect(result).toEqual(correctFuncOpening);
37
+ });
38
+ });
39
+ });
@@ -0,0 +1,51 @@
1
+ import { CodeEditorHelperBase } from './code-editor-helper.base';
2
+ import {
3
+ CodeEditorFuncOptions,
4
+ CodeEditorHelper,
5
+ CodeEditorLanguages,
6
+ CodeEditorTypesMap,
7
+ } from './code-editor-helper.model';
8
+
9
+ export class CodeEditorCHelper extends CodeEditorHelperBase implements CodeEditorHelper {
10
+ language = CodeEditorLanguages.C;
11
+ typesMap: CodeEditorTypesMap = {
12
+ boolean: 'bool',
13
+ int: 'int',
14
+ number: 'int',
15
+ double: 'double',
16
+ float: 'float',
17
+ str: 'char *',
18
+ array_boolean: 'bool *',
19
+ array_int: 'int *',
20
+ array_float: 'float *',
21
+ array_double: 'double *',
22
+ };
23
+
24
+ constructor(private functionOptions: CodeEditorFuncOptions) {
25
+ super();
26
+ }
27
+
28
+ getInitCode(): string {
29
+ return `${this.getFunctionOpening()}\t //Insert your code here \n}`;
30
+ }
31
+
32
+ getFunctionOpening(): string {
33
+ const { name: funcName, returnType } = this.functionOptions;
34
+ const params = this.getParamsString();
35
+ const showingReturnType = this.parseType(returnType);
36
+
37
+ return `${showingReturnType} ${funcName}(${params}) {\n`;
38
+ }
39
+
40
+ private getParamsString(): string {
41
+ const { params } = this.functionOptions;
42
+ let paramsString = '';
43
+
44
+ if (params && params.length > 0) {
45
+ params.forEach(values => (paramsString += `${this.parseType(values.type)} ${values.name}, `));
46
+ paramsString = paramsString.slice(0, -2);
47
+ }
48
+
49
+ return paramsString;
50
+ }
51
+ }
@@ -0,0 +1,30 @@
1
+ import { CodeEditorHelperBase } from './code-editor-helper.base';
2
+ import { CodeEditorLanguages } from './code-editor-helper.model';
3
+
4
+ class Helper extends CodeEditorHelperBase {
5
+ language = CodeEditorLanguages.Javascript;
6
+
7
+ getFunctionOpening(): string {
8
+ return 'func opening\n';
9
+ }
10
+ }
11
+
12
+ describe('CodeEditorHelperBase', () => {
13
+ let helper: Helper;
14
+
15
+ beforeEach(() => {
16
+ helper = new Helper();
17
+ });
18
+
19
+ describe('when getting editor language', () => {
20
+ let result: string;
21
+
22
+ beforeEach(() => {
23
+ result = helper.getEditorLang();
24
+ });
25
+
26
+ it('should return helper language', () => {
27
+ expect(result).toEqual(CodeEditorLanguages.Javascript);
28
+ });
29
+ });
30
+ });
@@ -0,0 +1,16 @@
1
+ import { CodeEditorLanguages, CodeEditorTypesMap } from './code-editor-helper.model';
2
+
3
+ export abstract class CodeEditorHelperBase {
4
+ protected language: CodeEditorLanguages;
5
+ protected typesMap: CodeEditorTypesMap;
6
+
7
+ abstract getFunctionOpening(): string;
8
+
9
+ getEditorLang(): CodeEditorLanguages {
10
+ return this.language;
11
+ }
12
+
13
+ protected parseType(type: keyof CodeEditorTypesMap): string {
14
+ return this.typesMap[type];
15
+ }
16
+ }
@@ -0,0 +1,24 @@
1
+ import { CodeEditorFuncOptions } from './code-editor-helper.model';
2
+
3
+ export const initCodeMock = 'export function mock(param1, param2) { return param1; }';
4
+
5
+ export const defaultFuncParams: CodeEditorFuncOptions = {
6
+ params: [
7
+ {
8
+ name: 'param1',
9
+ type: 'boolean',
10
+ },
11
+ {
12
+ name: 'param2',
13
+ type: 'int',
14
+ },
15
+ { name: 'param3', type: 'double' },
16
+ { name: 'param4', type: 'float' },
17
+ { name: 'param5', type: 'str' },
18
+ { name: 'param6', type: 'array_boolean' },
19
+ { name: 'param7', type: 'array_int' },
20
+ { name: 'param8', type: 'array_float' },
21
+ ],
22
+ name: 'mockFunction',
23
+ returnType: 'boolean',
24
+ };
@@ -0,0 +1,67 @@
1
+ export interface CodeEditorHelper {
2
+ getInitCode?(): string;
3
+ getEditorLang(): string;
4
+ }
5
+
6
+ export const enum CodeEditorLanguages {
7
+ Javascript = 'javascript',
8
+ Typescript = 'typescript',
9
+ Elixir = 'elixir',
10
+ Rust = 'rust',
11
+ Dart = 'dart',
12
+ Erlang = 'erlang',
13
+ Julia = 'julia',
14
+ Perl = 'perl',
15
+ Php = 'php',
16
+ Python = 'python',
17
+ Java = 'java',
18
+ Kotlin = 'kotlin',
19
+ Ruby = 'ruby',
20
+ C = 'c',
21
+ Cpp = 'c++',
22
+ CppEditor = 'cpp',
23
+ R = 'r',
24
+ Swift = 'swift',
25
+ Scala = 'scala',
26
+ CSharp = 'c#',
27
+ CSharpEditor = 'csharp',
28
+ CSharpLegacy = 'c#_legacy',
29
+ Go = 'go',
30
+ Sql = 'sql',
31
+ Sqlite = 'sqlite3',
32
+ }
33
+
34
+ export const enum CodeEditorSqlOperations {
35
+ Select = 'SELECT',
36
+ Update = 'UPDATE',
37
+ Insert = 'INSERT',
38
+ Delete = 'DELETE',
39
+ CreateTable = 'CREATE TABLE',
40
+ }
41
+
42
+ export interface CodeEditorFuncOptions {
43
+ name?: string | CodeEditorSqlOperations;
44
+ params?: CodeEditorFuncParam[];
45
+ returnType?: keyof CodeEditorTypesMap;
46
+ }
47
+
48
+ export interface CodeEditorFuncParam {
49
+ id?: string;
50
+ name?: string;
51
+ order?: string;
52
+ type?: keyof CodeEditorTypesMap;
53
+ }
54
+
55
+ export interface CodeEditorTypesMap {
56
+ boolean: string;
57
+ int: string;
58
+ number?: string;
59
+ double: string;
60
+ float: string;
61
+ str: string;
62
+ array_boolean: string;
63
+ array_int: string;
64
+ array_float: string;
65
+ array_double?: string;
66
+ array_str?: string;
67
+ }
@@ -0,0 +1,40 @@
1
+ import { defaultFuncParams } from './code-editor-helper.mocks';
2
+ import { CodeEditorCppHelper } from './cpp-helper';
3
+
4
+ describe('CodeEditorCppHelper', () => {
5
+ let helper: CodeEditorCppHelper;
6
+
7
+ const defaultParams = { ...defaultFuncParams };
8
+ const paramsList =
9
+ 'bool param1, int param2, double param3, float param4, std::string param5, std::vector<bool> param6, std::vector<int> param7, std::vector<float> param8';
10
+ const correctFuncOpening = `bool mockFunction(${paramsList}) {\n`;
11
+ const correctInitCode = `${correctFuncOpening}\t //Insert your code here \n}`;
12
+
13
+ beforeEach(() => {
14
+ helper = new CodeEditorCppHelper(defaultParams);
15
+ });
16
+
17
+ describe('when getting init code', () => {
18
+ let result: string;
19
+
20
+ beforeEach(() => {
21
+ result = helper.getInitCode();
22
+ });
23
+
24
+ it('should return proper init code', () => {
25
+ expect(result).toEqual(correctInitCode);
26
+ });
27
+ });
28
+
29
+ describe('when getting func opening', () => {
30
+ let result: string;
31
+
32
+ beforeEach(() => {
33
+ result = helper.getFunctionOpening();
34
+ });
35
+
36
+ it('should return proper func opening', () => {
37
+ expect(result).toEqual(correctFuncOpening);
38
+ });
39
+ });
40
+ });
@@ -0,0 +1,52 @@
1
+ import { CodeEditorHelperBase } from './code-editor-helper.base';
2
+ import {
3
+ CodeEditorFuncOptions,
4
+ CodeEditorHelper,
5
+ CodeEditorLanguages,
6
+ CodeEditorTypesMap,
7
+ } from './code-editor-helper.model';
8
+
9
+ export class CodeEditorCppHelper extends CodeEditorHelperBase implements CodeEditorHelper {
10
+ language = CodeEditorLanguages.CppEditor;
11
+ typesMap: CodeEditorTypesMap = {
12
+ boolean: 'bool',
13
+ int: 'int',
14
+ number: 'int',
15
+ double: 'double',
16
+ float: 'float',
17
+ str: 'std::string',
18
+ array_boolean: 'std::vector<bool>',
19
+ array_int: 'std::vector<int>',
20
+ array_float: 'std::vector<float>',
21
+ array_double: 'std::vector<double>',
22
+ array_str: 'std::vector<std::string>',
23
+ };
24
+
25
+ constructor(private functionOptions: CodeEditorFuncOptions) {
26
+ super();
27
+ }
28
+
29
+ getInitCode(): string {
30
+ return `${this.getFunctionOpening()}\t //Insert your code here \n}`;
31
+ }
32
+
33
+ getFunctionOpening(): string {
34
+ const { name: funcName, returnType } = this.functionOptions;
35
+ const params = this.getParamsString();
36
+ const showingReturnType = this.parseType(returnType);
37
+
38
+ return `${showingReturnType} ${funcName}(${params}) {\n`;
39
+ }
40
+
41
+ private getParamsString(): string {
42
+ const { params } = this.functionOptions;
43
+ let paramsString = '';
44
+
45
+ if (params && params.length > 0) {
46
+ params.forEach(values => (paramsString += `${this.parseType(values.type)} ${values.name}, `));
47
+ paramsString = paramsString.slice(0, -2);
48
+ }
49
+
50
+ return paramsString;
51
+ }
52
+ }
@@ -0,0 +1,42 @@
1
+ import { defaultFuncParams } from './code-editor-helper.mocks';
2
+ import { CodeEditorCSharpHelper } from './csharp-helper';
3
+
4
+ describe('CodeEditorCSharpHelper', () => {
5
+ let helper: CodeEditorCSharpHelper;
6
+
7
+ const defaultParams = { ...defaultFuncParams };
8
+ const paramsList =
9
+ 'bool param1, int param2, double param3, float param4, string param5, bool[] param6, int[] param7, Float[] param8';
10
+ const correctFuncOpening = `\t\tpublic static bool mockFunction(${paramsList}) {\n`;
11
+ const importText =
12
+ 'using System;\nusing System.Linq;\nnamespace TestTaker\n{\n\tpublic static class CustomCode\n\t{\n';
13
+ const correctInitCode = `${importText}${correctFuncOpening}\t\t //Insert your code here \n\t\t}\n\t}\n}`;
14
+
15
+ beforeEach(() => {
16
+ helper = new CodeEditorCSharpHelper(defaultParams);
17
+ });
18
+
19
+ describe('when getting init code', () => {
20
+ let result: string;
21
+
22
+ beforeEach(() => {
23
+ result = helper.getInitCode();
24
+ });
25
+
26
+ it('should return proper init code', () => {
27
+ expect(result).toEqual(correctInitCode);
28
+ });
29
+ });
30
+
31
+ describe('when getting func opening', () => {
32
+ let result: string;
33
+
34
+ beforeEach(() => {
35
+ result = helper.getFunctionOpening();
36
+ });
37
+
38
+ it('should return proper func opening', () => {
39
+ expect(result).toEqual(correctFuncOpening);
40
+ });
41
+ });
42
+ });
@@ -0,0 +1,55 @@
1
+ import { CodeEditorHelperBase } from './code-editor-helper.base';
2
+ import {
3
+ CodeEditorFuncOptions,
4
+ CodeEditorHelper,
5
+ CodeEditorLanguages,
6
+ CodeEditorTypesMap,
7
+ } from './code-editor-helper.model';
8
+
9
+ export class CodeEditorCSharpHelper extends CodeEditorHelperBase implements CodeEditorHelper {
10
+ language = CodeEditorLanguages.CSharpEditor;
11
+ typesMap: CodeEditorTypesMap = {
12
+ boolean: 'bool',
13
+ int: 'int',
14
+ number: 'int',
15
+ double: 'double',
16
+ float: 'float',
17
+ str: 'string',
18
+ array_boolean: 'bool[]',
19
+ array_int: 'int[]',
20
+ array_float: 'Float[]',
21
+ array_double: 'double[]',
22
+ array_str: 'string[]',
23
+ };
24
+
25
+ private importText =
26
+ 'using System;\nusing System.Linq;\nnamespace TestTaker\n{\n\tpublic static class CustomCode\n\t{\n';
27
+
28
+ constructor(private functionOptions: CodeEditorFuncOptions) {
29
+ super();
30
+ }
31
+
32
+ getInitCode(): string {
33
+ return `${this.importText}${this.getFunctionOpening()}\t\t //Insert your code here \n\t\t}\n\t}\n}`;
34
+ }
35
+
36
+ getFunctionOpening(): string {
37
+ const { name: funcName, returnType } = this.functionOptions;
38
+ const params = this.getParamsString();
39
+ const showingReturnType = this.parseType(returnType);
40
+
41
+ return `\t\tpublic static ${showingReturnType} ${funcName}(${params}) {\n`;
42
+ }
43
+
44
+ private getParamsString(): string {
45
+ const { params } = this.functionOptions;
46
+ let paramsString = '';
47
+
48
+ if (params && params.length > 0) {
49
+ params.forEach(values => (paramsString += `${this.parseType(values.type)} ${values.name}, `));
50
+ paramsString = paramsString.slice(0, -2);
51
+ }
52
+
53
+ return paramsString;
54
+ }
55
+ }
@@ -0,0 +1,41 @@
1
+ import { defaultFuncParams } from './code-editor-helper.mocks';
2
+ import { CodeEditorGoHelper } from './go-helper';
3
+
4
+ describe('CodeEditorGoHelper', () => {
5
+ let helper: CodeEditorGoHelper;
6
+
7
+ const defaultParams = { ...defaultFuncParams };
8
+ const paramsList =
9
+ 'param1 bool, param2 int, param3 double, param4 float64, param5 string, param6 []bool, param7 []int, param8 []float64';
10
+ const correctFuncOpening = `func MockFunction(${paramsList}) bool {\n`;
11
+ const importPackagesText = 'package testtaker\nimport ()\n';
12
+ const correctInitCode = `${importPackagesText}${correctFuncOpening}\t //Insert your code here \n}`;
13
+
14
+ beforeEach(() => {
15
+ helper = new CodeEditorGoHelper(defaultParams);
16
+ });
17
+
18
+ describe('when getting init code', () => {
19
+ let result: string;
20
+
21
+ beforeEach(() => {
22
+ result = helper.getInitCode();
23
+ });
24
+
25
+ it('should return proper init code', () => {
26
+ expect(result).toEqual(correctInitCode);
27
+ });
28
+ });
29
+
30
+ describe('when getting func opening', () => {
31
+ let result: string;
32
+
33
+ beforeEach(() => {
34
+ result = helper.getFunctionOpening();
35
+ });
36
+
37
+ it('should return proper func opening', () => {
38
+ expect(result).toEqual(correctFuncOpening);
39
+ });
40
+ });
41
+ });
@@ -0,0 +1,54 @@
1
+ import { CodeEditorHelperBase } from './code-editor-helper.base';
2
+ import {
3
+ CodeEditorFuncOptions,
4
+ CodeEditorHelper,
5
+ CodeEditorLanguages,
6
+ CodeEditorTypesMap,
7
+ } from './code-editor-helper.model';
8
+
9
+ export class CodeEditorGoHelper extends CodeEditorHelperBase implements CodeEditorHelper {
10
+ language = CodeEditorLanguages.Go;
11
+ typesMap: CodeEditorTypesMap = {
12
+ boolean: 'bool',
13
+ int: 'int',
14
+ number: 'int',
15
+ double: 'double',
16
+ float: 'float64',
17
+ str: 'string',
18
+ array_boolean: '[]bool',
19
+ array_int: '[]int',
20
+ array_float: '[]float64',
21
+ array_str: '[]string',
22
+ };
23
+
24
+ private importPackagesText = 'package testtaker\nimport ()\n';
25
+
26
+ constructor(private functionOptions: CodeEditorFuncOptions) {
27
+ super();
28
+ }
29
+
30
+ getInitCode(): string {
31
+ return `${this.importPackagesText}${this.getFunctionOpening()}\t //Insert your code here \n}`;
32
+ }
33
+
34
+ getFunctionOpening(): string {
35
+ const { name: funcName, returnType } = this.functionOptions;
36
+ const params = this.getParamsString();
37
+ const showingReturnType = this.parseType(returnType);
38
+ const uppercasedFuncName = `${funcName.charAt(0).toUpperCase()}${funcName.slice(1)}`;
39
+
40
+ return `func ${uppercasedFuncName}(${params}) ${showingReturnType} {\n`;
41
+ }
42
+
43
+ private getParamsString(): string {
44
+ const { params } = this.functionOptions;
45
+ let paramsString = '';
46
+
47
+ if (params && params.length > 0) {
48
+ params.forEach(values => (paramsString += `${values.name} ${this.parseType(values.type)}, `));
49
+ paramsString = paramsString.slice(0, -2);
50
+ }
51
+
52
+ return paramsString;
53
+ }
54
+ }
@@ -0,0 +1,15 @@
1
+ export { CodeEditorCHelper } from './c-helper';
2
+ export { CodeEditorCppHelper } from './cpp-helper';
3
+ export { CodeEditorCSharpHelper } from './csharp-helper';
4
+ export { CodeEditorGoHelper } from './go-helper';
5
+ export { CodeEditorJavaHelper } from './java-helper';
6
+ export { CodeEditorJavascriptHelper } from './javascript-helper';
7
+ export { CodeEditorKotlinHelper } from './kotlin-helper';
8
+ export { CodeEditorPhpHelper } from './php-helper';
9
+ export { CodeEditorPythonHelper } from './python-helper';
10
+ export { CodeEditorRHelper } from './r-helper';
11
+ export { CodeEditorRubyHelper } from './ruby-helper';
12
+ export { CodeEditorScalaHelper } from './scala-helper';
13
+ export { CodeEditorSqlHelper } from './sql-helper';
14
+ export { CodeEditorSwiftHelper } from './swift-helper';
15
+ export { CodeEditorTypescriptHelper } from './typescript-helper';
@@ -0,0 +1,41 @@
1
+ import { defaultFuncParams } from './code-editor-helper.mocks';
2
+ import { CodeEditorJavaHelper } from './java-helper';
3
+
4
+ describe('CodeEditorJavaHelper', () => {
5
+ let helper: CodeEditorJavaHelper;
6
+
7
+ const defaultParams = { ...defaultFuncParams };
8
+ const paramsList =
9
+ 'Boolean param1, Integer param2, Double param3, Float param4, String param5, Boolean[] param6, Integer[] param7, Float[] param8';
10
+ const classOpening = 'public class TestTaker {\n';
11
+ const correctFuncOpening = `\tpublic static Boolean mockFunction(${paramsList}) {\n`;
12
+ const correctInitCode = `${classOpening}${correctFuncOpening}\t\t //Insert your code here \n\t}\n`;
13
+
14
+ beforeEach(() => {
15
+ helper = new CodeEditorJavaHelper(defaultParams);
16
+ });
17
+
18
+ describe('when getting init code', () => {
19
+ let result: string;
20
+
21
+ beforeEach(() => {
22
+ result = helper.getInitCode();
23
+ });
24
+
25
+ it('should return proper init code', () => {
26
+ expect(result).toEqual(correctInitCode);
27
+ });
28
+ });
29
+
30
+ describe('when getting func opening', () => {
31
+ let result: string;
32
+
33
+ beforeEach(() => {
34
+ result = helper.getFunctionOpening();
35
+ });
36
+
37
+ it('should return proper func opening', () => {
38
+ expect(result).toEqual(correctFuncOpening);
39
+ });
40
+ });
41
+ });