Thanks for your advise. Before publishing a issue, please check some components.
Before publishing a issue, please check whether the duplicated issue exists or not.
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.
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.
Before sending a pull request, please test your new code. You type the command npm run build
, then compiling your code and test-automation will be all processed.
# COMPILE & TEST AT ONCE
npm run build
####
# SPECIAL COMMANDS
####
tsc # COMPILE ONLY
npm run test # TEST ONLY
npm run clean # CLEAN COMPILED RESULTS UP
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.
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 special functions starting from the prefix test_
must be export
ed. They also must return one of them:
void
Promise<void>
When you detect an error, then throw exception such below:
export function test_my_specific_logic1(): void
{
const 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>
{
const t1: Date = new Date();
await std.sleep_for(1000);
const t2: Date = new Date();
if (t2.getTime() - t1.getTime() < 1000)
throw new std.DomainError("std.sleep_for doesn't work.");
}
Thanks for your contributing. Before sending a pull request to me, please check those components.
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
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 const me update the test-automation module.
The basic coding convention of STL is the 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
on the classes at the same time.
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.
I've referenced contribution guidance of the TypeScript.