/*
 * Copyright 2024 Google LLC
 *
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */
#include "include/core/SkPath.h"
#include "include/core/SkString.h"
#include "include/private/SkAssert.h"
#include "include/utils/SkParsePath.h"

void FuzzParsePath(const uint8_t* data, size_t size) {
    // Put into a SkString first because we are not sure if the input
    // data is null-terminated or not.
    SkString input((const char*) data, size);
    if (auto path = SkParsePath::FromSVGString(input.c_str())) {
        SkString output1 = SkParsePath::ToSVGString(*path, SkParsePath::PathEncoding::Absolute);
        SkString output2 = SkParsePath::ToSVGString(*path, SkParsePath::PathEncoding::Relative);
        // Do something with the output so it is not optimized away.
        if (output1.startsWith("Impossible") || output2.startsWith("Impossible")) {
            SK_ABORT("invalid SVG created");
        }
    }
}

#if defined(SK_BUILD_FOR_LIBFUZZER)
extern "C" int LLVMFuzzerTestOneInput(const uint8_t* data, size_t size) {
    if (size > 1000) {
        return 0;
    }
    FuzzParsePath(data, size);
    return 0;
}
#endif
