mirror of
https://github.com/Genymobile/scrcpy
synced 2024-11-18 21:26:07 +00:00
0ba74fbd9a
The header scrcpy.h is intended to be the "public" API. It should not depend on other internal headers. Therefore, declare all required structs in this header and adapt internal code.
132 lines
3.5 KiB
C
132 lines
3.5 KiB
C
#include <assert.h>
|
|
#include <string.h>
|
|
|
|
#include "cli.h"
|
|
#include "common.h"
|
|
|
|
static void test_flag_version(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {"scrcpy", "-v"};
|
|
|
|
bool ok = scrcpy_parse_args(&args, 2, argv);
|
|
assert(ok);
|
|
assert(!args.help);
|
|
assert(args.version);
|
|
}
|
|
|
|
static void test_flag_help(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {"scrcpy", "-v"};
|
|
|
|
bool ok = scrcpy_parse_args(&args, 2, argv);
|
|
assert(ok);
|
|
assert(!args.help);
|
|
assert(args.version);
|
|
}
|
|
|
|
static void test_options(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {
|
|
"scrcpy",
|
|
"--always-on-top",
|
|
"--bit-rate", "5M",
|
|
"--crop", "100:200:300:400",
|
|
"--fullscreen",
|
|
"--max-fps", "30",
|
|
"--max-size", "1024",
|
|
"--lock-video-orientation", "2",
|
|
// "--no-control" is not compatible with "--turn-screen-off"
|
|
// "--no-display" is not compatible with "--fulscreen"
|
|
"--port", "1234:1236",
|
|
"--push-target", "/sdcard/Movies",
|
|
"--record", "file",
|
|
"--record-format", "mkv",
|
|
"--render-expired-frames",
|
|
"--serial", "0123456789abcdef",
|
|
"--show-touches",
|
|
"--turn-screen-off",
|
|
"--prefer-text",
|
|
"--window-title", "my device",
|
|
"--window-x", "100",
|
|
"--window-y", "-1",
|
|
"--window-width", "600",
|
|
"--window-height", "0",
|
|
"--window-borderless",
|
|
};
|
|
|
|
bool ok = scrcpy_parse_args(&args, ARRAY_LEN(argv), argv);
|
|
assert(ok);
|
|
|
|
const struct scrcpy_options *opts = &args.opts;
|
|
assert(opts->always_on_top);
|
|
assert(opts->bit_rate == 5000000);
|
|
assert(!strcmp(opts->crop, "100:200:300:400"));
|
|
assert(opts->fullscreen);
|
|
assert(opts->max_fps == 30);
|
|
assert(opts->max_size == 1024);
|
|
assert(opts->lock_video_orientation == 2);
|
|
assert(opts->port_range.first == 1234);
|
|
assert(opts->port_range.last == 1236);
|
|
assert(!strcmp(opts->push_target, "/sdcard/Movies"));
|
|
assert(!strcmp(opts->record_filename, "file"));
|
|
assert(opts->record_format == SC_RECORD_FORMAT_MKV);
|
|
assert(opts->render_expired_frames);
|
|
assert(!strcmp(opts->serial, "0123456789abcdef"));
|
|
assert(opts->show_touches);
|
|
assert(opts->turn_screen_off);
|
|
assert(opts->prefer_text);
|
|
assert(!strcmp(opts->window_title, "my device"));
|
|
assert(opts->window_x == 100);
|
|
assert(opts->window_y == -1);
|
|
assert(opts->window_width == 600);
|
|
assert(opts->window_height == 0);
|
|
assert(opts->window_borderless);
|
|
}
|
|
|
|
static void test_options2(void) {
|
|
struct scrcpy_cli_args args = {
|
|
.opts = SCRCPY_OPTIONS_DEFAULT,
|
|
.help = false,
|
|
.version = false,
|
|
};
|
|
|
|
char *argv[] = {
|
|
"scrcpy",
|
|
"--no-control",
|
|
"--no-display",
|
|
"--record", "file.mp4", // cannot enable --no-display without recording
|
|
};
|
|
|
|
bool ok = scrcpy_parse_args(&args, ARRAY_LEN(argv), argv);
|
|
assert(ok);
|
|
|
|
const struct scrcpy_options *opts = &args.opts;
|
|
assert(!opts->control);
|
|
assert(!opts->display);
|
|
assert(!strcmp(opts->record_filename, "file.mp4"));
|
|
assert(opts->record_format == SC_RECORD_FORMAT_MP4);
|
|
}
|
|
|
|
int main(void) {
|
|
test_flag_version();
|
|
test_flag_help();
|
|
test_options();
|
|
test_options2();
|
|
return 0;
|
|
};
|