Add missing samples

This commit is contained in:
Alex Dima 2020-09-21 12:18:52 +02:00
parent 26ff8cb857
commit db4c9f21b4
No known key found for this signature in database
GPG key ID: 6E58D7B045760DA0
52 changed files with 5060 additions and 540 deletions

View file

@ -0,0 +1,38 @@
// Contract simulating developers organization
contract HackBG =
record state = { developers: map(address, developer) }
record developer = { name: string
, age: int
, skillset: map(skill, experience) }
type skill = string
type experience = int
datatype event =
LogDeveloperAdded(indexed address, indexed int, string)
entrypoint init() : state = { developers = {} }
stateful entrypoint dev_add(account: address, dev_name: string, dev_age: int) =
require(!is_member(account), "ERROR_DEVELOPER_ALREADY_EXISTS")
let dev : developer = { name = dev_name
, age = dev_age
, skillset = {} }
put(state{ developers[account] = dev })
Chain.event(LogDeveloperAdded(account, Chain.timestamp, dev_name))
stateful entrypoint dev_update(account: address, dev_name: string, dev_age: int) =
require(is_member(account), "ERROR_DEVELOPER_DOES_NOT_EXIST")
put(state{ developers[account].name = dev_name })
put(state{ developers[account].age = dev_age })
function is_member(account: address) : bool =
Map.member(account, state.developers)
stateful entrypoint dev_skill_modify(account: address, skill: string, experience: int) =
put(state{ developers[account].skillset[skill] = experience })
entrypoint dev_get(account: address) : developer =
state.developers[account]

View file

@ -0,0 +1,17 @@
type storage = int
type parameter =
Increment of int
| Decrement of int
| Reset
type return = operation list * storage
// Two entrypoints
let add (store, delta : storage * int) : storage = store + delta
let sub (store, delta : storage * int) : storage = store - delta
(* Main access point that dispatches to the entrypoints according to
the smart contract parameter. *)
let main (action, store : parameter * storage) : return =
([] : operation list), // No operations
(match action with
Increment (n) -> add (store, n)
| Decrement (n) -> sub (store, n)
| Reset -> 0)

View file

@ -1,23 +1,38 @@
/*
* C# Program to Display All the Prime Numbers Between 1 to 100
*/
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace VS
{
class Program
{
static void Main(string[] args)
{
ProcessStartInfo si = new ProcessStartInfo();
float load= 3.2e02f;
si.FileName = @"tools\\node.exe";
si.Arguments = "tools\\simpleserver.js";
Process.Start(si);
{
bool isPrime = true;
Console.WriteLine("Prime Numbers : ");
for (int i = 2; i <= 100; i++)
{
for (int j = 2; j <= 100; j++)
{
if (i != j && i % j == 0)
{
isPrime = false;
break;
}
}
if (isPrime)
{
Console.Write("\t" +i);
}
isPrime = true;
}
Console.ReadKey();
}
}
}

View file

@ -0,0 +1,37 @@
import 'dart:async';
import 'dart:math' show Random;
main() async {
print('Compute π using the Monte Carlo method.');
await for (var estimate in computePi().take(100)) {
print('π ≅ $estimate');
}
}
/// Generates a stream of increasingly accurate estimates of π.
Stream<double> computePi({int batch: 100000}) async* {
var total = 0;
var count = 0;
while (true) {
var points = generateRandom().take(batch);
var inside = points.where((p) => p.isInsideUnitCircle);
total += batch;
count += inside.length;
var ratio = count / total;
// Area of a circle is A = π⋅r², therefore π = A/r².
// So, when given random points with x ∈ <0,1>,
// y ∈ <0,1>, the ratio of those inside a unit circle
// should approach π / 4. Therefore, the value of π
// should be:
yield ratio * 4;
}
}
Iterable<Point> generateRandom([int seed]) sync* {
final random = Random(seed);
while (true) {
yield Point(random.nextDouble(), random.nextDouble());
}
}
class Point {
final double x, y;
const Point(this.x, this.y);
bool get isInsideUnitCircle => x * x + y * y <= 1;
}

View file

@ -1,263 +1,263 @@
# GraphQL Schema Definition Language
"""
Color value
"""
scalar Color
"""
Node interface
- allows (re)fetch arbitrary entity only by ID
- allows client side cache normalization
See [Relay Global Object Identification Specification](https://facebook.github.io/relay/graphql/objectidentification.htm)
"""
interface Node {
"""
Globally unique identifier,
typically `${__typename}:${dbId}`
may be encoded in *base64*
"""
id: ID!
}
"""
A character in the Star Wars Trilogy
"""
interface Character {
"""
The id of the character.
"""
id: ID!
"""
The name of the character.
"""
name: String
"""
The friends of the character, or an empty list if they have none.
"""
friends: [Character]
"""
Which movies they appear in
"""
appearsIn: [Episode]
"""
All secrets about their past
"""
secretBackstory: String
}
"""
A mechanical creature in the Star Wars universe.
"""
type Droid implements Character {
"""
The id of the droid.
"""
id: ID!
"""
The name of the droid.
"""
name: String
"""
The friends of the droid, or an empty list if they have none.
"""
friends: [Character]
"""
Which movies they appear in.
"""
appearsIn: [Episode]
"""
Construction date and the name of the designer.
"""
secretBackstory: String
"""
The primary function of the droid.
"""
primaryFunction: String
"""
Chase color of the droid.
"""
color: Color
}
# One of the films in the Star Wars Trilogy
enum Episode {
"""
Released in 1977.
"""
NEWHOPE
"""
Released in 1980.
"""
EMPIRE
"""
Released in 1983.
"""
JEDI
}
"""
A humanoid creature in the Star Wars universe.
"""
type Human implements Character {
"""
The id of the human.
"""
id: ID!
"""
The name of the human.
"""
name: String
"""
The friends of the human, or an empty list if they have none.
"""
friends: [Character]
"""
Which movies they appear in.
"""
appearsIn: [Episode]
"""
The home planet of the human, or null if unknown.
"""
homePlanet: String
"""
Where are they from and how they came to be who they are.
"""
secretBackstory: String
}
enum LengthUnit {
METER
FEET
}
type Starship {
id: ID!
name: String!
length(unit: LengthUnit = METER): Float
}
union SearchResult = Human | Droid | Starship
input SearchInput {
name: String
episode: Episode
}
"""
Root Query
"""
type Query {
"""
Return the hero by episode.
"""
hero(
"""
If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.
"""
episode: Episode
): Character
"""
Return the Human by ID.
"""
human(
"""
id of the human
"""
id: ID!
): Human
"""
Return the Droid by ID.
"""
droid(
"""
id of the droid
"""
id: ID!
): Droid
"""
Search everything by name
__NOTE__: You should use Relay pagination
"""
search(search: SearchInput!): [SearchResult]
@deprecated(reason: "`search` will be replaced.")
}
"""
Root Mutation
"""
type Mutation {
"""
Save the favorite episode.
"""
favorite(
"""
Favorite episode.
"""
episode: Episode!
): Episode
}
"""
Subscriptions — live events
"""
type Subscription {
"""
Message
"""
message: String
}
extend type Query {
"""
Dummy query for highlighting test
"""
dummy(
int: Int = 123
float: Float = 123.456
str: String = "Hello World!"
boolDefaultTrue: Boolean = true
boolDefaultFalse: Boolean = false
id: ID
search: SearchInput = null
): Boolean
}
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
# GraphQL Query Language
query dummyQuery($int: Int) {
dummy(int: $int)
}
mutation favoriteEpisode($episode: Episode) {
favorite(episode: $episode)
}
# GraphQL Schema Definition Language
"""
Color value
"""
scalar Color
"""
Node interface
- allows (re)fetch arbitrary entity only by ID
- allows client side cache normalization
See [Relay Global Object Identification Specification](https://facebook.github.io/relay/graphql/objectidentification.htm)
"""
interface Node {
"""
Globally unique identifier,
typically `${__typename}:${dbId}`
may be encoded in *base64*
"""
id: ID!
}
"""
A character in the Star Wars Trilogy
"""
interface Character {
"""
The id of the character.
"""
id: ID!
"""
The name of the character.
"""
name: String
"""
The friends of the character, or an empty list if they have none.
"""
friends: [Character]
"""
Which movies they appear in
"""
appearsIn: [Episode]
"""
All secrets about their past
"""
secretBackstory: String
}
"""
A mechanical creature in the Star Wars universe.
"""
type Droid implements Character {
"""
The id of the droid.
"""
id: ID!
"""
The name of the droid.
"""
name: String
"""
The friends of the droid, or an empty list if they have none.
"""
friends: [Character]
"""
Which movies they appear in.
"""
appearsIn: [Episode]
"""
Construction date and the name of the designer.
"""
secretBackstory: String
"""
The primary function of the droid.
"""
primaryFunction: String
"""
Chase color of the droid.
"""
color: Color
}
# One of the films in the Star Wars Trilogy
enum Episode {
"""
Released in 1977.
"""
NEWHOPE
"""
Released in 1980.
"""
EMPIRE
"""
Released in 1983.
"""
JEDI
}
"""
A humanoid creature in the Star Wars universe.
"""
type Human implements Character {
"""
The id of the human.
"""
id: ID!
"""
The name of the human.
"""
name: String
"""
The friends of the human, or an empty list if they have none.
"""
friends: [Character]
"""
Which movies they appear in.
"""
appearsIn: [Episode]
"""
The home planet of the human, or null if unknown.
"""
homePlanet: String
"""
Where are they from and how they came to be who they are.
"""
secretBackstory: String
}
enum LengthUnit {
METER
FEET
}
type Starship {
id: ID!
name: String!
length(unit: LengthUnit = METER): Float
}
union SearchResult = Human | Droid | Starship
input SearchInput {
name: String
episode: Episode
}
"""
Root Query
"""
type Query {
"""
Return the hero by episode.
"""
hero(
"""
If omitted, returns the hero of the whole saga. If provided, returns the hero of that particular episode.
"""
episode: Episode
): Character
"""
Return the Human by ID.
"""
human(
"""
id of the human
"""
id: ID!
): Human
"""
Return the Droid by ID.
"""
droid(
"""
id of the droid
"""
id: ID!
): Droid
"""
Search everything by name
__NOTE__: You should use Relay pagination
"""
search(search: SearchInput!): [SearchResult]
@deprecated(reason: "`search` will be replaced.")
}
"""
Root Mutation
"""
type Mutation {
"""
Save the favorite episode.
"""
favorite(
"""
Favorite episode.
"""
episode: Episode!
): Episode
}
"""
Subscriptions — live events
"""
type Subscription {
"""
Message
"""
message: String
}
extend type Query {
"""
Dummy query for highlighting test
"""
dummy(
int: Int = 123
float: Float = 123.456
str: String = "Hello World!"
boolDefaultTrue: Boolean = true
boolDefaultFalse: Boolean = false
id: ID
search: SearchInput = null
): Boolean
}
schema {
query: Query
mutation: Mutation
subscription: Subscription
}
# GraphQL Query Language
query dummyQuery($int: Int) {
dummy(int: $int)
}
mutation favoriteEpisode($episode: Episode) {
favorite(episode: $episode)
}

View file

@ -1,21 +1,100 @@
<!DOCTYPE HTML>
<!--
Comments are overrated
-->
<!--Example of comments in HTML-->
<html>
<head>
<!--This is the head section-->
<title>HTML Sample</title>
<meta charset="utf-8">
<!--This is the style tag to set style on elements-->
<style type="text/css">
h1 {
color: #CCA3A3;
h1
{
font-family: Tahoma;
font-size: 40px;
font-weight: normal;
margin: 50px;
color: #a0a0a0;
}
h2
{
font-family: Tahoma;
font-size: 30px;
font-weight: normal;
margin: 50px;
color: #fff;
}
p
{
font-family: Tahoma;
font-size: 17px;
font-weight: normal;
margin: 0px 200px;
color: #fff;
}
div.Center
{
text-align: center;
}
div.Blue
{
padding: 50px;
background-color: #7bd2ff;
}
button.Gray
{
font-family: Tahoma;
font-size: 17px;
font-weight: normal;
margin-top: 100px;
padding: 10px 50px;
background-color: #727272;
color: #fff;
outline: 0;
border: none;
cursor: pointer;
}
button.Gray:hover
{
background-color: #898888;
}
button.Gray:active
{
background-color: #636161;
}
</style>
<!--This is the script tag-->
<script type="text/javascript">
window.alert("I am a sample...");
function ButtonClick(){
// Example of comments in JavaScript
window.alert("I'm an alert sample!");
}
</script>
</head>
<body>
<h1>Heading No.1</h1>
<input disabled type="button" value="Click me" />
<!--This is the body section-->
<div class="Center">
<h1>NAME OF SITE</h1>
</div>
<div class="Center Blue">
<h2>I'm h2 Header! Edit me in &lt;h2&gt;</h2>
<p>
I'm a paragraph! Edit me in &lt;p&gt;
to add your own content and make changes to the style and font.
It's easy! Just change the text between &lt;p&gt; ... &lt;/p&gt; and change the style in &lt;style&gt;.
You can make it as long as you wish. The browser will automatically wrap the lines to accommodate the
size of the browser window.
</p>
<button class="Gray" onclick="ButtonClick()">Click Me!</button>
</div>
</body>
</html>

View file

@ -1,14 +1,54 @@
import java.util.ArrayList;
import org.junit.Test;
/*
Basic Java example using FizzBuzz
*/
import java.util.Random;
public class Example {
@Test
public void method() {
org.junit.Assert.assertTrue( "isEmpty", new ArrayList<Integer>().isEmpty());
}
@Test(timeout=100) public void infinity() {
while(true);
}
}
public static void main (String[] args){
// Generate a random number between 1-100. (See generateRandomNumber method.)
int random = generateRandomNumber(100);
// Output generated number.
System.out.println("Generated number: " + random + "\n");
// Loop between 1 and the number we just generated.
for (int i=1; i<=random; i++){
// If i is divisible by both 3 and 5, output "FizzBuzz".
if (i % 3 == 0 && i % 5 == 0){
System.out.println("FizzBuzz");
}
// If i is divisible by 3, output "Fizz"
else if (i % 3 == 0){
System.out.println("Fizz");
}
// If i is divisible by 5, output "Buzz".
else if (i % 5 == 0){
System.out.println("Buzz");
}
// If i is not divisible by either 3 or 5, output the number.
else {
System.out.println(i);
}
}
}
/**
Generates a new random number between 0 and 100.
@param bound The highest number that should be generated.
@return An integer representing a randomly generated number between 0 and 100.
*/
private static int generateRandomNumber(int bound){
// Create new Random generator object and generate the random number.
Random randGen = new Random();
int randomNum = randGen.nextInt(bound);
// If the random number generated is zero, use recursion to regenerate the number until it is not zero.
if (randomNum < 1){
randomNum = generateRandomNumber(bound);
}
return randomNum;
}
}

View file

@ -0,0 +1,23 @@
# good style
function fixedpointmap(f; iv, tolerance=1E-7, maxiter=1000)
# setup the algorithm
x_old = iv
normdiff = Inf
iter = 1
while normdiff > tolerance && iter <= maxiter
x_new = f(x_old) # use the passed in map
normdiff = norm(x_new - x_old)
x_old = x_new
iter = iter + 1
end
return (value = x_old, normdiff=normdiff, iter=iter) # A named tuple
end
# define a map and parameters
p = 1.0
β = 0.9
f(v) = p + β * v # note that p and β are used in the function!
sol = fixedpointmap(f, iv=0.8, tolerance=1.0E-8) # don't need to pass
println("Fixed point = $(sol.value), and |f(x) - x| = $(sol.normdiff) in $(sol.iter)"*
" iterations")

View file

@ -0,0 +1,21 @@
LEX Paid Escrow.
LEXON: 0.2.20
COMMENT: 3.f - an escrow that is controlled by a third party for a fee.
“Payer” is a person.
“Payee” is a person.
“Arbiter” is a person.
“Fee” is an amount.
The Payer pays an Amount into escrow,
appoints the Payee,
appoints the Arbiter,
and also fixes the Fee.
CLAUSE: Pay Out.
The Arbiter may pay from escrow the Fee to themselves,
and afterwards pay the remainder of the escrow to the Payee.
CLAUSE: Pay Back.
The Arbiter may pay from escrow the Fee to themselves,
and afterwards return the remainder of the escrow to the Payer.

View file

@ -4,6 +4,13 @@
## Markdown plus h2 with a custom ID ## {#id-goes-here}
[Link back to H2](#id-goes-here)
```js
var x = "string";
function f() {
return x;
}
```
<!-- html madness -->
<div class="custom-class" markdown="1">
<div>
@ -23,12 +30,12 @@
- Another one
+ Another one
This is a paragraph, which is text surrounded by
whitespace. Paragraphs can be on one
line (or many), and can drone on for hours.
This is a paragraph, which is text surrounded by
whitespace. Paragraphs can be on one
line (or many), and can drone on for hours.
Now some inline markup like _italics_, **bold**,
and `code()`. Note that underscores
Now some inline markup like _italics_, **bold**,
and `code()`. Note that underscores
in_words_are ignored.
````application/json
@ -57,11 +64,11 @@ if (this_is_more_code == true && !indented) {
}
~~~
Text with
two trailing spaces
(on the right)
can be used
for things like poems
Text with
two trailing spaces
(on the right)
can be used
for things like poems
### Horizontal rules
@ -69,7 +76,7 @@ for things like poems
****
--------------------------
![picture alt](/images/photo.jpeg "Title is optional")
![picture alt](/images/photo.jpeg "Title is optional")
## Markdown plus tables ##

View file

@ -0,0 +1,13 @@
# A[i] = A[i/2] + 1;
lw $t0, 0($gp) # fetch i
srl $t1, $t0, 1 # i/2
sll $t1, $t1, 2 # turn i/2 into a byte offset (*4)
add $t1, $gp, $t1 # &A[i/2] - 28
lw $t1, 28($t1) # fetch A[i/2]
addi $t1, $t1, 1 # A[i/2] + 1
sll $t2, $t0, 2 # turn i into a byte offset
add $t2, $t2, $gp # &A[i] - 28
sw $t1, 28($t2) # A[i] = ...
# A[i+1] = -1;
addi $t1, $zero, -1 # -1
sw $t1, 32($t2) # A[i+1] = -1

View file

@ -25,4 +25,4 @@ begin
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
end.

View file

@ -0,0 +1,20 @@
type storage is int
type parameter is
Increment of int
| Decrement of int
| Reset
type return is list (operation) * storage
// Two entrypoints
function add (const store : storage; const delta : int) : storage is
store + delta
function sub (const store : storage; const delta : int) : storage is
store - delta
(* Main access point that dispatches to the entrypoints according to
the smart contract parameter. *)
function main (const action : parameter; const store : storage) : return is
((nil : list (operation)), // No operations
case action of
Increment (n) -> add (store, n)
| Decrement (n) -> sub (store, n)
| Reset -> 0
end)

View file

@ -0,0 +1,26 @@
=================
My Project Readme
=================
-------------------------
Clever subtitle goes here
-------------------------
Introduction
============
This is an example reStructuredText document that starts at the very top
with a title and a sub-title. There is one primary header, Introduction.
There is one example subheading below.
The document is just plain text so it is easily readable even before
being converted to HTML, man page, PDF or other formats.
Subheading
----------
The basic syntax is not that different from Markdown, but it also
has many more powerful features that Markdown doesn't have. We aren't
taking advantage of those yet though.
- Bullet points
- Are intuitive
- And simple too

View file

@ -0,0 +1,53 @@
package examples
/** Quick sort, imperative style */
object sort {
/** Nested methods can use and even update everything
* visible in their scope (including local variables or
* arguments of enclosing methods).
*/
def sort(a: Array[Int]) {
def swap(i: Int, j: Int) {
val t = a(i); a(i) = a(j); a(j) = t
}
def sort1(l: Int, r: Int) {
val pivot = a((l + r) / 2)
var i = l
var j = r
while (i <= j) {
while (a(i) < pivot) i += 1
while (a(j) > pivot) j -= 1
if (i <= j) {
swap(i, j)
i += 1
j -= 1
}
}
if (l < j) sort1(l, j)
if (j < r) sort1(i, r)
}
if (a.length > 0)
sort1(0, a.length - 1)
}
def println(ar: Array[Int]) {
def print1 = {
def iter(i: Int): String =
ar(i) + (if (i < ar.length-1) "," + iter(i+1) else "")
if (ar.length == 0) "" else iter(0)
}
Console.println("[" + print1 + "]")
}
def main(args: Array[String]) {
val ar = Array(6, 2, 8, 5, 1)
println(ar)
sort(ar)
println(ar)
}
}

View file

@ -0,0 +1,28 @@
// File : tb_top.sv
module tb_top ();
reg clk;
reg resetn;
reg d;
wire q;
// Instantiate the design
d_ff d_ff0 ( .clk (clk),
.resetn (resetn),
.d (d),
.q (q));
// Create a clock
always #10 clk <= ~clk;
initial begin
resetn <= 0;
d <= 0;
#10 resetn <= 1;
#5 d <= 1;
#8 d <= 0;
#2 d <= 1;
#10 d <= 0;
end
endmodule

View file

@ -0,0 +1,18 @@
proc find {{basedir .} {filterScript {}}} {
set oldwd [pwd]
cd $basedir
set cwd [pwd]
set filenames [glob -nocomplain * .*]
set files {}
set filt [string length $filterScript]
foreach filename $filenames {
if {!$filt || [eval $filterScript [list $filename]]} {
lappend files [file join $cwd $filename]
}
if {[file isdirectory $filename]} {
set files [concat $files [find $filename $filterScript]]
}
}
cd $oldwd
return $files
}

View file

@ -0,0 +1,12 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>{% block title %}Welcome!{% endblock %}</title>
{% block stylesheets %}{% endblock %}
</head>
<body>
{% block body %}{% endblock %}
{% block javascripts %}{% endblock %}
</body>
</html>

View file

@ -2,21 +2,21 @@
* Implemented in TypeScript
* To learn more about TypeScript, please visit http://www.typescriptlang.org/
*/
module Conway {
namespace Conway {
export class Cell {
public row: number;
public col: number;
public live: boolean;
constructor(row: number, col: number, live: boolean) {
this.row = row;
this.col = col;
this.live = live
this.live = live;
}
}
export class GameOfLife {
private gridSize: number;
private canvasSize: number;
@ -28,8 +28,8 @@ module Conway {
private cellSize: number;
private context: CanvasRenderingContext2D;
private world;
constructor() {
this.gridSize = 50;
this.canvasSize = 600;
@ -42,14 +42,14 @@ module Conway {
this.world = this.createWorld();
this.circleOfLife();
}
public createWorld() {
return this.travelWorld( (cell : Cell) => {
cell.live = Math.random() < this.initialLifeProbability;
return cell;
});
}
public circleOfLife() : void {
this.world = this.travelWorld( (cell: Cell) => {
cell = this.world[cell.row][cell.col];
@ -57,8 +57,8 @@ module Conway {
return this.resolveNextGeneration(cell);
});
setTimeout( () => {this.circleOfLife()}, this.animationRate);
}
}
public resolveNextGeneration(cell : Cell) {
var count = this.countNeighbors(cell);
var newCell = new Cell(cell.row, cell.col, cell.live);
@ -66,7 +66,7 @@ module Conway {
else if(count == 3) newCell.live = true;
return newCell;
}
public countNeighbors(cell : Cell) {
var neighbors = 0;
for(var row = -1; row <=1; row++) {
@ -79,12 +79,12 @@ module Conway {
}
return neighbors;
}
public isAlive(row : number, col : number) {
if(row < 0 || col < 0 || row >= this.gridSize || col >= this.gridSize) return false;
return this.world[row][col].live;
}
public travelWorld(callback) {
var result = [];
for(var row = 0; row < this.gridSize; row++) {
@ -93,20 +93,20 @@ module Conway {
rowData.push(callback(new Cell(row, col, false)));
}
result.push(rowData);
}
}
return result;
}
public draw(cell : Cell) {
if(this.context == null) this.context = this.createDrawingContext();
if(this.cellSize == 0) this.cellSize = this.canvasSize/this.gridSize;
this.context.strokeStyle = this.lineColor;
this.context.strokeRect(cell.row * this.cellSize, cell.col*this.cellSize, this.cellSize, this.cellSize);
this.context.fillStyle = cell.live ? this.liveColor : this.deadColor;
this.context.fillRect(cell.row * this.cellSize, cell.col*this.cellSize, this.cellSize, this.cellSize);
}
}
public createDrawingContext() {
var canvas = <HTMLCanvasElement> document.getElementById('conway-canvas');
if(canvas == null) {

View file

@ -0,0 +1,35 @@
`include "first_counter.v"
module first_counter_tb();
// Declare inputs as regs and outputs as wires
reg clock, reset, enable;
wire [3:0] counter_out;
// Initialize all variables
initial begin
$display ("time\t clk reset enable counter");
$monitor ("%g\t %b %b %b %b",
$time, clock, reset, enable, counter_out);
clock = 1; // initial value of clock
reset = 0; // initial value of reset
enable = 0; // initial value of enable
#5 reset = 1; // Assert the reset
#10 reset = 0; // De-assert the reset
#10 enable = 1; // Assert enable
#100 enable = 0; // De-assert enable
#5 $finish; // Terminate simulation
end
// Clock generator
always begin
#5 clock = ~clock; // Toggle clock every 5 ticks
end
// Connect DUT to test bench
first_counter U_counter (
clock,
reset,
enable,
counter_out
);
endmodule