Add cxyz Android project structure and initial configuration

- Introduced a new Flutter project for the cxyz Android manga/comic reader, including essential files such as pubspec.yaml, AndroidManifest.xml, and Gradle configuration.
- Added .gitignore files to exclude unnecessary files and directories for both the main project and Android-specific files.
- Implemented initial README.md with project description, features, setup instructions, and API details for ComicLand, MangaRead, and MangaTown.
- Configured analysis options and dependencies in pubspec.yaml to support Flutter development.
- Established a pnpm workspace and lockfile for dependency management.
- Included various Android resources such as icons, styles, and launch backgrounds for a complete application setup.
This commit is contained in:
2026-08-29 17:50:31 +07:00
parent 6e7f1ced35
commit a7c6058540
105 changed files with 16721 additions and 275 deletions
@@ -0,0 +1,33 @@
import 'package:flutter_test/flutter_test.dart';
import 'package:cxyz_android/sources/mangatown/mangatown_source.dart';
import 'package:cxyz_android/sources/source.dart';
@Tags(['network'])
void main() {
test(
'latest pagination: offset 0 and 30 yield different first slugs',
() async {
final source = MangaTownSource();
final first = await source.loadCatalog(
CatalogMenuKind.latest,
offset: 0,
limit: 30,
);
final second = await source.loadCatalog(
CatalogMenuKind.latest,
offset: 30,
limit: 30,
);
expect(first, isNotEmpty);
expect(second, isNotEmpty);
expect(first.first.slug, isNot(second.first.slug));
final firstSlugs = first.map((c) => c.slug).toSet();
expect(
second.any((c) => firstSlugs.contains(c.slug)),
isFalse,
reason: 'page 2 should not overlap page 1',
);
},
timeout: const Timeout(Duration(seconds: 90)),
);
}