-
-
Notifications
You must be signed in to change notification settings - Fork 49
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
contribution guide and test refactoring
- Loading branch information
Jeongho Nam
committed
Aug 13, 2017
1 parent
3352ac8
commit 25f9c0d
Showing
28 changed files
with
451 additions
and
422 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,111 @@ | ||
# Contribution Guide | ||
## Publishing a Issue | ||
Thanks for your advise. Before publishing a issue, please check some components. | ||
|
||
### 1. Search for duplicates | ||
Before publishing a issue, please check whether the duplicated issue exists or not. | ||
- [Ordinary Issues](https://github.com/samchon/tstl/issues) | ||
|
||
### 2. Did you find a bug? | ||
When you reporting a bug, then please write about those items: | ||
|
||
- What version of TSTL you're using | ||
- If possible, give me an isolated way to reproduce the behavior. | ||
- The behavior your expect to see, and the actual behavior. | ||
|
||
### 3. Do you have a suggestion? | ||
I always welcome your suggestion. When you publishing a suggestion, then please write such items: | ||
|
||
- A description of the problem you're trying to solve. | ||
- An overview of the suggested solution. | ||
- Examples of how the suggestion whould work in various places. | ||
- Code examples showing the expected behavior. | ||
- If relevant, precedent in C++/STL can be useful for establishing context and expected behavior. | ||
|
||
## Contributing Code | ||
### Test your code | ||
Before sending a pull request, please test your new code. You go into the `build` directory and execute the `build.js`, then compiling your code and test-automation will be all processed. | ||
|
||
```bash | ||
tstl> node build/build | ||
``` | ||
|
||
If you succeeded to compile, but failed to pass the test-automation, then *debug* the test-automation module. I've configured the `.vscode/launch.json`. You just run the `VSCode` and click the `Start Debugging` button or press `F5` key. By the *debugging*, find the reason why the *test* is failed and fix it. | ||
|
||
### Adding a Test | ||
If you want to add a testing-logic, then goto the `src/test` directory. It's the directory containing the test-automation module. Declare some functions starting from the prefix `test_`. Then, they will be called after the next testing. | ||
|
||
Note that, the specific functions starting from the prefix `test_` must be delcared in the namespace of `test`. They also must return one of them: | ||
- `void` | ||
- `Promise<void>` | ||
|
||
When you detect an error, then throw exception such below: | ||
|
||
```typescript | ||
namespace test | ||
{ | ||
export function test_my_specific_logic1(): void | ||
{ | ||
let vec = new std.Vector<number>(); | ||
for (let i: number = 0; i < 100; ++i) | ||
vec.push_back(Math.random()); | ||
|
||
std.sort(vec.begin(), vec.end()); | ||
|
||
if (std.is_sorted(vec.begin(), vec.end()) == false) | ||
throw new std.DomainError("std.sort doesn't work."); | ||
} | ||
|
||
export async function test_my_specific_logic2(): Promise<void> | ||
{ | ||
let t1: Date = new Date(); | ||
await std.sleep_for(1000); | ||
|
||
let t2: Date = new Date(); | ||
if (t2.getTime() - t1.getTime() < 1000) | ||
throw new std.DomainError("std.sleep_for doesn't work."); | ||
} | ||
} | ||
``` | ||
|
||
### Sending a Pull Request | ||
Thanks for your contributing. Before sending a pull request to me, please check those components. | ||
|
||
#### 1. Include enough descriptions | ||
When you send a pull request, please include a description, of what your change intends to do, on the content. Title, make it clear and simple such below: | ||
- Refactor features | ||
- Fix issue #17 | ||
- Add tests for issue #28 | ||
|
||
#### 2. Include adequate tests | ||
As I've mentioned in the `Contributing Code` section, your PR should pass the test-automation module. Your PR includes *new features* that have not being handled in the ordinary test-automation module, then also update *add the testing unit* please. | ||
|
||
If there're some specific reasons that could not pass the test-automation (not error but *intended*), then please update the ordinary test-automation module or write the reasons on your PR content and *let me update the test-automation module*. | ||
|
||
#### 3. Follow coding conventions | ||
The basic coding convention of STL is the [`snake_case`](https://en.wikipedia.org/wiki/Snake_case). TypeScript-STL follows the basic coding convention; `snake_case`. However, there's a difference when naming the classes. TSTL uses `snake_case` and [`PascalCase`](https://en.wikipedia.org/wiki/PascalCase) on the classes at the same time. | ||
|
||
```typescript | ||
namespace std | ||
{ | ||
export class Vector<T> // class base: PascalCase | ||
{ | ||
// methods: snake_cases | ||
public push_back(val: T): void; | ||
public pop_back(): void; | ||
} | ||
export import vector = Vector; // class alias := snake_case | ||
|
||
// global functions: snake_case | ||
export function less_equal_to<T>(x: T, y: T): boolean; | ||
export function sleep_until(at: Date): Promise<void>; | ||
} | ||
``` | ||
|
||
Thus, when you creating a new class, the make it to follow the [PascalCase] and make an alias following the `snake_case`. Methods in the classes or global functions, they just use the basic coding convention; `snake_case`. | ||
|
||
- The detailed coding convention will be provided soon. | ||
|
||
## References | ||
I've referenced contribution guidance of TypeScript. | ||
- https://github.com/Microsoft/TypeScript/blob/master/CONTRIBUTING.md |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,12 +6,17 @@ | |
"email": "[email protected]", | ||
"url": "http://samchon.org" | ||
}, | ||
|
||
"version": "1.5.6", | ||
"main": "./lib/tstl.js", | ||
"typings": "./lib/tstl.d.ts", | ||
"version": "1.5.5", | ||
"scripts": { | ||
"test": "node lib/test" | ||
}, | ||
"devDependencies": { | ||
"@types/node": "^7.0.8" | ||
}, | ||
|
||
"homepage": "https://github.com/samchon/tstl", | ||
"repository": { | ||
"type": "git", | ||
|
@@ -26,6 +31,7 @@ | |
"url": "https://opensource.org/licenses/BSD-3-Clause" | ||
} | ||
], | ||
|
||
"keywords": [ | ||
"stl", "standard template library", "typescript", "standard", "template", "library", | ||
|
||
|
@@ -34,10 +40,13 @@ | |
"stack", "queue", "priority_queue", | ||
"set", "multiset", "unordered_set", "unordered_multiset", | ||
"map", "multimap", "unordered_map", "unordered_multimap", | ||
"mutex", "thread", | ||
|
||
"IComparable", "Pair", "PriorityQueue", | ||
"TreeSet", "TreeMultiSet", "HashSet", "HashMultiSet", | ||
"TreeMap", "TreeMultiMap", "HashMap", "HashMultiMap" | ||
"TreeMap", "TreeMultiMap", "HashMap", "HashMultiMap", | ||
|
||
"mutex", "thread", "sleep", | ||
"TimedMutex", "SharedMutex", "SharedTimedMutex", | ||
"timed_mutex", "shared_mutex", "shared_timed_mutex" | ||
] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.