mirror of
https://github.com/pybricks/pybricks-code.git
synced 2026-09-12 01:23:52 +00:00
add tests for lwp3-bootloader reducers
This commit is contained in:
@@ -48,6 +48,10 @@ export enum BootloaderConnectionActionType {
|
||||
* The connection has been closed.
|
||||
*/
|
||||
DidDisconnect = 'bootloader.action.connection.did.disconnect',
|
||||
/**
|
||||
* Disconnecting failed.
|
||||
*/
|
||||
DidFailToDisconnect = 'bootloader.action.connection.did.failToDisconnect',
|
||||
}
|
||||
|
||||
export type BootloaderConnectionConnectAction = Action<BootloaderConnectionActionType.Connect>;
|
||||
@@ -184,6 +188,12 @@ export function didDisconnect(): BootloaderConnectionDidDisconnectAction {
|
||||
return { type: BootloaderConnectionActionType.DidDisconnect };
|
||||
}
|
||||
|
||||
export type BootloaderConnectionDidFailToDisconnectAction = Action<BootloaderConnectionActionType.DidFailToDisconnect>;
|
||||
|
||||
export function didFailToDisconnect(): BootloaderConnectionDidFailToDisconnectAction {
|
||||
return { type: BootloaderConnectionActionType.DidFailToDisconnect };
|
||||
}
|
||||
|
||||
/**
|
||||
* Common type for all bootloader connection actions.
|
||||
*/
|
||||
@@ -196,7 +206,9 @@ export type BootloaderConnectionAction =
|
||||
| BootloaderConnectionDidSendAction
|
||||
| BootloaderConnectionDidFailToSendAction
|
||||
| BootloaderConnectionDidReceiveAction
|
||||
| BootloaderConnectionDidDisconnectAction;
|
||||
| BootloaderConnectionDisconnectAction
|
||||
| BootloaderConnectionDidDisconnectAction
|
||||
| BootloaderConnectionDidFailToDisconnectAction;
|
||||
|
||||
/**
|
||||
* Bootloader request actions for sending commands over the connection.
|
||||
|
||||
@@ -0,0 +1,80 @@
|
||||
// SPDX-License-Identifier: MIT
|
||||
// Copyright (c) 2021 The Pybricks Authors
|
||||
|
||||
import { Action } from '../actions';
|
||||
import {
|
||||
BootloaderConnectionFailureReason,
|
||||
connect,
|
||||
didConnect,
|
||||
didDisconnect,
|
||||
didFailToConnect,
|
||||
didFailToDisconnect,
|
||||
disconnect,
|
||||
disconnectRequest,
|
||||
rebootRequest,
|
||||
} from './actions';
|
||||
import reducers, { BootloaderConnectionState } from './reducers';
|
||||
|
||||
type State = ReturnType<typeof reducers>;
|
||||
|
||||
test('initial state', () => {
|
||||
expect(reducers(undefined, {} as Action)).toMatchInlineSnapshot(`
|
||||
Object {
|
||||
"connection": "bootloader.connection.disconnected",
|
||||
}
|
||||
`);
|
||||
});
|
||||
|
||||
test('connection', () => {
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Disconnected } as State,
|
||||
connect(),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Connecting);
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Connecting } as State,
|
||||
didConnect(),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Connected);
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Connecting } as State,
|
||||
didFailToConnect(BootloaderConnectionFailureReason.Canceled),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Disconnected);
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Connected } as State,
|
||||
disconnect(),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Disconnecting);
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Disconnecting } as State,
|
||||
didDisconnect(),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Disconnected);
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Disconnecting } as State,
|
||||
didFailToDisconnect(),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Connected);
|
||||
|
||||
// certain commands are also know to trigger disconnect
|
||||
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Connected } as State,
|
||||
rebootRequest(0),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Disconnecting);
|
||||
expect(
|
||||
reducers(
|
||||
{ connection: BootloaderConnectionState.Connected } as State,
|
||||
disconnectRequest(0),
|
||||
).connection,
|
||||
).toBe(BootloaderConnectionState.Disconnecting);
|
||||
});
|
||||
@@ -35,7 +35,9 @@ const connection: Reducer<BootloaderConnectionState, Action> = (
|
||||
case BootloaderConnectionActionType.Connect:
|
||||
return BootloaderConnectionState.Connecting;
|
||||
case BootloaderConnectionActionType.DidConnect:
|
||||
case BootloaderConnectionActionType.DidFailToDisconnect:
|
||||
return BootloaderConnectionState.Connected;
|
||||
case BootloaderConnectionActionType.Disconnect:
|
||||
case BootloaderRequestActionType.Reboot:
|
||||
case BootloaderRequestActionType.Disconnect:
|
||||
return BootloaderConnectionState.Disconnecting;
|
||||
|
||||
Reference in New Issue
Block a user