/*
 * Daytona Toolbox API
 * Daytona Toolbox API
 *
 * The version of the OpenAPI document: v0.0.0-dev
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */


package io.daytona.toolbox.client.api;

import io.daytona.toolbox.client.ApiException;
import io.daytona.toolbox.client.model.AccessibilityInvokeRequest;
import io.daytona.toolbox.client.model.AccessibilityNodeRequest;
import io.daytona.toolbox.client.model.AccessibilityNodesResponse;
import io.daytona.toolbox.client.model.AccessibilitySetValueRequest;
import io.daytona.toolbox.client.model.AccessibilityTreeResponse;
import java.math.BigDecimal;
import io.daytona.toolbox.client.model.ComputerUseStartResponse;
import io.daytona.toolbox.client.model.ComputerUseStatusResponse;
import io.daytona.toolbox.client.model.ComputerUseStopResponse;
import io.daytona.toolbox.client.model.DisplayInfoResponse;
import java.io.File;
import io.daytona.toolbox.client.model.FindAccessibilityNodesRequest;
import io.daytona.toolbox.client.model.KeyboardHotkeyRequest;
import io.daytona.toolbox.client.model.KeyboardPressRequest;
import io.daytona.toolbox.client.model.KeyboardTypeRequest;
import io.daytona.toolbox.client.model.ListRecordingsResponse;
import io.daytona.toolbox.client.model.MouseClickRequest;
import io.daytona.toolbox.client.model.MouseClickResponse;
import io.daytona.toolbox.client.model.MouseDragRequest;
import io.daytona.toolbox.client.model.MouseDragResponse;
import io.daytona.toolbox.client.model.MouseMoveRequest;
import io.daytona.toolbox.client.model.MousePositionResponse;
import io.daytona.toolbox.client.model.MouseScrollRequest;
import io.daytona.toolbox.client.model.ProcessErrorsResponse;
import io.daytona.toolbox.client.model.ProcessLogsResponse;
import io.daytona.toolbox.client.model.ProcessRestartResponse;
import io.daytona.toolbox.client.model.ProcessStatusResponse;
import io.daytona.toolbox.client.model.Recording;
import io.daytona.toolbox.client.model.ScreenshotResponse;
import io.daytona.toolbox.client.model.ScrollResponse;
import io.daytona.toolbox.client.model.StartRecordingRequest;
import io.daytona.toolbox.client.model.StopRecordingRequest;
import io.daytona.toolbox.client.model.WindowsResponse;
import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * API tests for ComputerUseApi
 */
@Disabled
public class ComputerUseApiTest {

    private final ComputerUseApi api = new ComputerUseApi();

    /**
     * Click mouse button
     *
     * Click the mouse button at the specified coordinates
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void clickTest() throws ApiException {
        MouseClickRequest request = null;
        MouseClickResponse response = api.click(request);
        // TODO: test validations
    }

    /**
     * Delete a recording
     *
     * Delete a recording file by ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void deleteRecordingTest() throws ApiException {
        String id = null;
        api.deleteRecording(id);
        // TODO: test validations
    }

    /**
     * Download a recording
     *
     * Download a recording by providing its ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void downloadRecordingTest() throws ApiException {
        String id = null;
        File response = api.downloadRecording(id);
        // TODO: test validations
    }

    /**
     * Drag mouse
     *
     * Drag the mouse from start to end coordinates
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void dragTest() throws ApiException {
        MouseDragRequest request = null;
        MouseDragResponse response = api.drag(request);
        // TODO: test validations
    }

    /**
     * Find accessibility nodes
     *
     * Search the AT-SPI tree for nodes matching a role/name/state filter and return a flat list.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void findAccessibilityNodesTest() throws ApiException {
        FindAccessibilityNodesRequest request = null;
        AccessibilityNodesResponse response = api.findAccessibilityNodes(request);
        // TODO: test validations
    }

    /**
     * Focus an accessibility node
     *
     * Move keyboard focus to the AT-SPI node identified by id (bus-name:object-path).
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void focusAccessibilityNodeTest() throws ApiException {
        AccessibilityNodeRequest request = null;
        Object response = api.focusAccessibilityNode(request);
        // TODO: test validations
    }

    /**
     * Get accessibility tree
     *
     * Fetch the AT-SPI accessibility tree for the focused application, a specific PID, or all registered applications.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getAccessibilityTreeTest() throws ApiException {
        String scope = null;
        Integer pid = null;
        Integer maxDepth = null;
        AccessibilityTreeResponse response = api.getAccessibilityTree(scope, pid, maxDepth);
        // TODO: test validations
    }

    /**
     * Get computer use process status
     *
     * Get the status of all computer use processes
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getComputerUseStatusTest() throws ApiException {
        ComputerUseStatusResponse response = api.getComputerUseStatus();
        // TODO: test validations
    }

    /**
     * Get computer use status
     *
     * Get the current status of the computer use system
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getComputerUseSystemStatusTest() throws ApiException {
        ComputerUseStatusResponse response = api.getComputerUseSystemStatus();
        // TODO: test validations
    }

    /**
     * Get display information
     *
     * Get information about all available displays
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getDisplayInfoTest() throws ApiException {
        DisplayInfoResponse response = api.getDisplayInfo();
        // TODO: test validations
    }

    /**
     * Get mouse position
     *
     * Get the current mouse cursor position
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getMousePositionTest() throws ApiException {
        MousePositionResponse response = api.getMousePosition();
        // TODO: test validations
    }

    /**
     * Get process errors
     *
     * Get errors for a specific computer use process
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getProcessErrorsTest() throws ApiException {
        String processName = null;
        ProcessErrorsResponse response = api.getProcessErrors(processName);
        // TODO: test validations
    }

    /**
     * Get process logs
     *
     * Get logs for a specific computer use process
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getProcessLogsTest() throws ApiException {
        String processName = null;
        ProcessLogsResponse response = api.getProcessLogs(processName);
        // TODO: test validations
    }

    /**
     * Get specific process status
     *
     * Check if a specific computer use process is running
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getProcessStatusTest() throws ApiException {
        String processName = null;
        ProcessStatusResponse response = api.getProcessStatus(processName);
        // TODO: test validations
    }

    /**
     * Get recording details
     *
     * Get details of a specific recording by ID
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getRecordingTest() throws ApiException {
        String id = null;
        Recording response = api.getRecording(id);
        // TODO: test validations
    }

    /**
     * Get windows information
     *
     * Get information about all open windows
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void getWindowsTest() throws ApiException {
        WindowsResponse response = api.getWindows();
        // TODO: test validations
    }

    /**
     * Invoke an action on an accessibility node
     *
     * Call an AT-SPI Action on the node. Leave action empty to invoke the node&#39;s primary (first) action.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void invokeAccessibilityNodeTest() throws ApiException {
        AccessibilityInvokeRequest request = null;
        Object response = api.invokeAccessibilityNode(request);
        // TODO: test validations
    }

    /**
     * List all recordings
     *
     * Get a list of all recordings (active and completed)
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void listRecordingsTest() throws ApiException {
        ListRecordingsResponse response = api.listRecordings();
        // TODO: test validations
    }

    /**
     * Move mouse cursor
     *
     * Move the mouse cursor to the specified coordinates
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void moveMouseTest() throws ApiException {
        MouseMoveRequest request = null;
        MousePositionResponse response = api.moveMouse(request);
        // TODO: test validations
    }

    /**
     * Press hotkey
     *
     * Press a hotkey combination (e.g., ctrl+c, cmd+v)
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void pressHotkeyTest() throws ApiException {
        KeyboardHotkeyRequest request = null;
        Object response = api.pressHotkey(request);
        // TODO: test validations
    }

    /**
     * Press key
     *
     * Press a key with optional modifiers
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void pressKeyTest() throws ApiException {
        KeyboardPressRequest request = null;
        Object response = api.pressKey(request);
        // TODO: test validations
    }

    /**
     * Restart specific process
     *
     * Restart a specific computer use process
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void restartProcessTest() throws ApiException {
        String processName = null;
        ProcessRestartResponse response = api.restartProcess(processName);
        // TODO: test validations
    }

    /**
     * Scroll mouse wheel
     *
     * Scroll the mouse wheel at the specified coordinates
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void scrollTest() throws ApiException {
        MouseScrollRequest request = null;
        ScrollResponse response = api.scroll(request);
        // TODO: test validations
    }

    /**
     * Set the value of an accessibility node
     *
     * Write the given value to the node via EditableText.SetTextContents or, for numeric controls, Value.CurrentValue.
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void setAccessibilityNodeValueTest() throws ApiException {
        AccessibilitySetValueRequest request = null;
        Object response = api.setAccessibilityNodeValue(request);
        // TODO: test validations
    }

    /**
     * Start computer use processes
     *
     * Start all computer use processes and return their status
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void startComputerUseTest() throws ApiException {
        ComputerUseStartResponse response = api.startComputerUse();
        // TODO: test validations
    }

    /**
     * Start a new recording
     *
     * Start a new screen recording session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void startRecordingTest() throws ApiException {
        StartRecordingRequest request = null;
        Recording response = api.startRecording(request);
        // TODO: test validations
    }

    /**
     * Stop computer use processes
     *
     * Stop all computer use processes and return their status
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void stopComputerUseTest() throws ApiException {
        ComputerUseStopResponse response = api.stopComputerUse();
        // TODO: test validations
    }

    /**
     * Stop a recording
     *
     * Stop an active screen recording session
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void stopRecordingTest() throws ApiException {
        StopRecordingRequest request = null;
        Recording response = api.stopRecording(request);
        // TODO: test validations
    }

    /**
     * Take a compressed region screenshot
     *
     * Take a compressed screenshot of a specific region of the screen
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void takeCompressedRegionScreenshotTest() throws ApiException {
        Integer x = null;
        Integer y = null;
        Integer width = null;
        Integer height = null;
        Boolean showCursor = null;
        String format = null;
        Integer quality = null;
        BigDecimal scale = null;
        ScreenshotResponse response = api.takeCompressedRegionScreenshot(x, y, width, height, showCursor, format, quality, scale);
        // TODO: test validations
    }

    /**
     * Take a compressed screenshot
     *
     * Take a compressed screenshot of the entire screen
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void takeCompressedScreenshotTest() throws ApiException {
        Boolean showCursor = null;
        String format = null;
        Integer quality = null;
        BigDecimal scale = null;
        ScreenshotResponse response = api.takeCompressedScreenshot(showCursor, format, quality, scale);
        // TODO: test validations
    }

    /**
     * Take a region screenshot
     *
     * Take a screenshot of a specific region of the screen
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void takeRegionScreenshotTest() throws ApiException {
        Integer x = null;
        Integer y = null;
        Integer width = null;
        Integer height = null;
        Boolean showCursor = null;
        ScreenshotResponse response = api.takeRegionScreenshot(x, y, width, height, showCursor);
        // TODO: test validations
    }

    /**
     * Take a screenshot
     *
     * Take a screenshot of the entire screen
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void takeScreenshotTest() throws ApiException {
        Boolean showCursor = null;
        ScreenshotResponse response = api.takeScreenshot(showCursor);
        // TODO: test validations
    }

    /**
     * Type text
     *
     * Type text with optional delay between keystrokes
     *
     * @throws ApiException if the Api call fails
     */
    @Test
    public void typeTextTest() throws ApiException {
        KeyboardTypeRequest request = null;
        Object response = api.typeText(request);
        // TODO: test validations
    }

}
