/**
 * Copyright (c) 2024 Huawei Technologies Co., Ltd.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE-MIT file in the root directory of this source tree.
 */

import React from 'react';
import { Vibration } from 'react-native';
import { TestCase, TestSuite } from '@rnoh/testerino';
import { Button } from '../components';

export const VibrationTest = () => {
  const ONE_SECOND_IN_MS = 1000;
  const PATTERN = [
    1 * ONE_SECOND_IN_MS,
    1 * ONE_SECOND_IN_MS,
    1 * ONE_SECOND_IN_MS,
    2 * ONE_SECOND_IN_MS,
    1 * ONE_SECOND_IN_MS,
    3 * ONE_SECOND_IN_MS,
    1 * ONE_SECOND_IN_MS,
    4 * ONE_SECOND_IN_MS,
  ];

  return (
    <TestSuite name="Button">
      <TestCase itShould="vibrate once for 400ms">
        <Button
          onPress={() => {
            Vibration.vibrate();
          }}
          label={'Vibrate once'}
        />
      </TestCase>
      <TestCase itShould="vibrate for five seconds after button press">
        <Button
          onPress={() => {
            Vibration.vibrate(ONE_SECOND_IN_MS * 5);
          }}
          label={'Vibrate for five seconds'}
        />
      </TestCase>
      <TestCase itShould="vibrate with pattern in increasing multiples of one second with a one second pause">
        <Button
          onPress={() => {
            Vibration.vibrate(PATTERN);
          }}
          label={'vibrate with pattern'}
        />
      </TestCase>
      <TestCase itShould="vibrate until cancelled">
        <Button
          onPress={() => {
            Vibration.vibrate([500, ONE_SECOND_IN_MS], true);
          }}
          label={
            'vibrate for one second with a 0,5 s gap between each repetition until cancelled'
          }
        />
        <Button
          onPress={() => {
            Vibration.cancel();
          }}
          label={'cancel vibration'}
        />
      </TestCase>
    </TestSuite>
  );
};