Browse Source

Add tests

pull/4418/head
Rustam Sayfutdinov 5 years ago
parent
commit
1025b12402
  1. 3
      .editorconfig
  2. 4
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/InputEventMessageBase.ts
  3. 18
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/MouseEventHelpers.ts
  4. 2
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerEventMessageBase.ts
  5. 2
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerMovedEventMessage.ts
  6. 6
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerPressedEventMessage.ts
  7. 6
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerReleasedEventMessage.ts
  8. 2
      src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/ScrollEventMessage.ts
  9. 2
      tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/.gitignore
  10. 73
      tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/Models/InputEventTests.ts
  11. 2414
      tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/package-lock.json
  12. 26
      tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/package.json
  13. 12
      tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/tsconfig.json

3
.editorconfig

@ -156,6 +156,9 @@ indent_size = 2
[*.{props,targets,config,nuspec}]
indent_size = 2
[*.json]
indent_size = 2
# Shell scripts
[*.sh]
end_of_line = lf

4
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/InputEventMessageBase.ts

@ -1,6 +1,6 @@
import * as React from "react";
import {InputModifiers} from "src/Models/Input/InputModifiers";
import {getModifiers} from "src/Models/Input/MouseEventHelpers";
import {InputModifiers} from "./InputModifiers";
import {getModifiers} from "./MouseEventHelpers";
export abstract class InputEventMessageBase {
public readonly modifiers : Array<InputModifiers>;

18
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/MouseEventHelpers.ts

@ -1,6 +1,6 @@
import * as React from "react";
import {InputModifiers} from "src/Models/Input/InputModifiers";
import {MouseButton} from "src/Models/Input/MouseButton";
import {InputModifiers} from "./InputModifiers";
import {MouseButton} from "./MouseButton";
export function getModifiers(e: React.MouseEvent): Array<InputModifiers> {
@ -14,12 +14,14 @@ export function getModifiers(e: React.MouseEvent): Array<InputModifiers> {
modifiers.push(InputModifiers.Shift);
if (e.metaKey)
modifiers.push(InputModifiers.Windows);
if ((e.buttons & 1) != 0)
modifiers.push(InputModifiers.LeftMouseButton);
if ((e.buttons & 2) != 0)
modifiers.push(InputModifiers.RightMouseButton);
if ((e.buttons & 4) != 0)
modifiers.push(InputModifiers.MiddleMouseButton);
if (e.buttons != 0) {
if ((e.buttons & 1) != 0)
modifiers.push(InputModifiers.LeftMouseButton);
if ((e.buttons & 2) != 0)
modifiers.push(InputModifiers.RightMouseButton);
if ((e.buttons & 4) != 0)
modifiers.push(InputModifiers.MiddleMouseButton);
}
return modifiers;
}

2
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerEventMessageBase.ts

@ -1,5 +1,5 @@
import * as React from "react";
import {InputEventMessageBase} from "src/Models/Input/InputEventMessageBase";
import {InputEventMessageBase} from "./InputEventMessageBase";
export abstract class PointerEventMessageBase extends InputEventMessageBase {
public readonly x: number;

2
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerMovedEventMessage.ts

@ -1,5 +1,5 @@
import * as React from "react";
import {PointerEventMessageBase} from "src/Models/Input/PointerEventMessageBase";
import {PointerEventMessageBase} from "./PointerEventMessageBase";
export class PointerMovedEventMessage extends PointerEventMessageBase {
constructor(e: React.MouseEvent) {

6
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerPressedEventMessage.ts

@ -1,7 +1,7 @@
import * as React from "react";
import {PointerEventMessageBase} from "src/Models/Input/PointerEventMessageBase";
import {MouseButton} from "src/Models/Input/MouseButton";
import {getMouseButton} from "src/Models/Input/MouseEventHelpers";
import {PointerEventMessageBase} from "./PointerEventMessageBase";
import {MouseButton} from "./MouseButton";
import {getMouseButton} from "./MouseEventHelpers";
export class PointerPressedEventMessage extends PointerEventMessageBase {
public readonly button: MouseButton

6
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerReleasedEventMessage.ts

@ -1,7 +1,7 @@
import * as React from "react";
import {PointerEventMessageBase} from "src/Models/Input/PointerEventMessageBase";
import {MouseButton} from "src/Models/Input/MouseButton";
import {getMouseButton} from "src/Models/Input/MouseEventHelpers";
import {PointerEventMessageBase} from "./PointerEventMessageBase";
import {MouseButton} from "./MouseButton";
import {getMouseButton} from "./MouseEventHelpers";
export class PointerReleasedEventMessage extends PointerEventMessageBase {
public readonly button: MouseButton

2
src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/ScrollEventMessage.ts

@ -1,5 +1,5 @@
import * as React from "react";
import {PointerEventMessageBase} from "src/Models/Input/PointerEventMessageBase";
import {PointerEventMessageBase} from "./PointerEventMessageBase";
export class ScrollEventMessage extends PointerEventMessageBase {
public readonly deltaX: number;

2
tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/.gitignore

@ -0,0 +1,2 @@
build
node_modules

73
tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/Models/InputEventTests.ts

@ -0,0 +1,73 @@
import {describe} from 'mocha';
import {expect} from 'chai';
import {Mock} from "moq.ts";
import {MouseEvent, WheelEvent} from "react";
import {InputModifiers} from "../../../../../../src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/InputModifiers";
import {MouseButton} from "../../../../../../src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/MouseButton";
import {PointerMovedEventMessage} from "../../../../../../src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerMovedEventMessage";
import {PointerPressedEventMessage} from "../../../../../../src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerPressedEventMessage";
import {PointerReleasedEventMessage} from "../../../../../../src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/PointerReleasedEventMessage";
import {ScrollEventMessage} from "../../../../../../src/Avalonia.DesignerSupport/Remote/HtmlTransport/webapp/src/Models/Input/ScrollEventMessage";
const x = .3
const y = .42
const modifiers = [
InputModifiers.Alt,
InputModifiers.Control,
InputModifiers.Shift,
InputModifiers.Windows,
InputModifiers.LeftMouseButton,
InputModifiers.RightMouseButton,
InputModifiers.MiddleMouseButton
]
const button = MouseButton.Left
const deltaX = -3.
const deltaY = -3.
const mouseEvent = new Mock<MouseEvent>()
.setup(x => x.altKey).returns(true)
.setup(x => x.ctrlKey).returns(true)
.setup(x => x.shiftKey).returns(true)
.setup(x => x.metaKey).returns(true)
.setup(x => x.buttons).returns(7)
.setup(x => x.button).returns(0)
.setup(x => x.clientX).returns(x)
.setup(x => x.clientY).returns(y)
.object()
const wheelEvent = new Mock<WheelEvent>()
.setup(x => x.altKey).returns(true)
.setup(x => x.ctrlKey).returns(true)
.setup(x => x.shiftKey).returns(true)
.setup(x => x.metaKey).returns(true)
.setup(x => x.buttons).returns(7)
.setup(x => x.clientX).returns(x)
.setup(x => x.clientY).returns(y)
.setup(x => x.deltaX).returns(-deltaX)
.setup(x => x.deltaY).returns(-deltaY)
.object()
describe("Input event tests", () => {
it("PointerMovedEventMessage", () => {
const message = new PointerMovedEventMessage(mouseEvent)
expect(message.toString())
.equal(`pointer-moved:${modifiers}:${x}:${y}`)
})
it("PointerPressedEventMessage", () => {
const message = new PointerPressedEventMessage(mouseEvent)
expect(message.toString())
.equal(`pointer-pressed:${modifiers}:${x}:${y}:${button}`)
})
it("PointerReleasedEventMessage", () => {
const message = new PointerReleasedEventMessage(mouseEvent)
expect(message.toString())
.equal(`pointer-released:${modifiers}:${x}:${y}:${button}`)
})
it("ScrollEventMessage", () => {
const message = new ScrollEventMessage(wheelEvent)
expect(message.toString())
.equal(`scroll:${modifiers}:${x}:${y}:${deltaX}:${deltaY}`)
})
})

2414
tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/package-lock.json

File diff suppressed because it is too large

26
tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/package.json

@ -0,0 +1,26 @@
{
"name": "simple-test",
"version": "1.0.0",
"main": "index.js",
"scripts": {
"test": "mocha -r ts-node/register ./**/*Tests.ts",
"coverage": "nyc -r text -e .ts -x \"./*Tests.ts\" npm run test"
},
"type": "module",
"keywords": [],
"author": "",
"license": "MIT",
"dependencies": {},
"devDependencies": {
"@types/chai": "4.2.12",
"@types/mocha": "8.0.3",
"@types/react": "^16.3.14",
"chai": "^4.2.0",
"mocha": "^8.1.3",
"moq.ts": "^6.4.0",
"nyc": "^15.1.0",
"react": "^16.3.2",
"ts-node": "^9.0.0",
"typescript": "^4.0.2"
}
}

12
tests/Avalonia.DesignerSupport.Tests/Remote/HtmlTransport/webapp/tsconfig.json

@ -0,0 +1,12 @@
{
"compilerOptions": {
"module": "commonjs",
"target": "es5",
"sourceMap": true,
"strict": true,
"esModuleInterop": true
},
"exclude": [
"node_modules"
]
}
Loading…
Cancel
Save