blob: d9eb5163b5fe6f241892eedb245179786325f402 [file] [log] [blame]
// Copyright 2013 The Flutter Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import 'dart:ffi';
import 'package:ffi/ffi.dart';
import 'package:flutter_test/flutter_test.dart';
import 'package:path_provider_linux/src/get_application_id_real.dart';
class _FakeGioUtils implements GioUtils {
int? application;
Pointer<Utf8>? applicationId;
@override
bool libraryIsPresent = false;
@override
int gApplicationGetDefault() => application!;
@override
Pointer<Utf8> gApplicationGetApplicationId(int app) => applicationId!;
}
void main() {
late _FakeGioUtils fakeGio;
setUp(() {
fakeGio = _FakeGioUtils();
gioUtilsOverride = fakeGio;
});
tearDown(() {
gioUtilsOverride = null;
});
test('returns null if libgio is not available', () {
expect(getApplicationId(), null);
});
test('returns null if g_paplication_get_default returns 0', () {
fakeGio.libraryIsPresent = true;
fakeGio.application = 0;
expect(getApplicationId(), null);
});
test('returns null if g_application_get_application_id returns nullptr', () {
fakeGio.libraryIsPresent = true;
fakeGio.application = 1;
fakeGio.applicationId = nullptr;
expect(getApplicationId(), null);
});
test('returns value if g_application_get_application_id returns a value', () {
fakeGio.libraryIsPresent = true;
fakeGio.application = 1;
const String id = 'foo';
final Pointer<Utf8> idPtr = id.toNativeUtf8();
fakeGio.applicationId = idPtr;
expect(getApplicationId(), id);
calloc.free(idPtr);
});
}