00001
00002 #include <ept/config.h>
00003 #include <ept/core/apt.h>
00004 #include <ept/core/list.h>
00005 #include <ept/test.h>
00006
00007 using namespace ept::core;
00008
00009 struct TestCoreApt : AptTestEnvironment
00010 {
00011 package::Source pkgs;
00012 version::Source vers;
00013 ept::Token t;
00014
00015 TestCoreApt() : pkgs( db ), vers( db ) {
00016 t._id = "sp";
00017 }
00018
00019 Test token() {
00020 assert_eq( t.package(), "sp" );
00021 assert_eq( t.version(), "" );
00022 }
00023
00024 Test tokenVersion() {
00025 ept::Token t2;
00026 t2._id = "libwibble-dev_0.1.10";
00027 assert_eq( t2.package(), "libwibble-dev" );
00028 assert_eq( t2.version(), "0.1.10" );
00029 }
00030
00031 Test packageName() {
00032 assert_eq( t.package(), pkgs.get< package::Name >( t ) );
00033 }
00034
00035 template< typename List >
00036 void checkPackageNameList( List l ) {
00037 while ( !l.empty() ) {
00038 assert_eq( l.token().package(), l.property() );
00039 l = l.tail();
00040 }
00041 }
00042
00043 template< typename List >
00044 void checkVersionPackageList( List l ) {
00045 while ( !l.empty() ) {
00046 assert_eq( l.property().package(), l.token().package() );
00047 assert_eq( l.property().version(), "" );
00048 l = l.tail();
00049 }
00050 }
00051
00052 Test packageCount() {
00053 assert_eq( list::count( pkgs.list< package::Name >() ),
00054 3777 );
00055 }
00056
00057 Test packageNameList() {
00058 checkPackageNameList( pkgs.list< package::Name >() );
00059 }
00060
00061 Test versionCount() {
00062 assert_eq( list::count( vers.list< version::Package >() ),
00063 1808 );
00064 }
00065
00066 Test versionPackage() {
00067 checkVersionPackageList( vers.list< version::Package >() );
00068 }
00069
00070 Test validate() {
00071 assert_eq( t, db.validate( t ) );
00072 assert_neq( ept::Token( "libfoobar" ),
00073 db.validate( ept::Token( "libfooar" ) ) );
00074 assert_eq( ept::Token(), db.validate( ept::Token( "libfoobar" ) ) );
00075 }
00076
00077 Test packageState() {
00078 assert( db.packageState( t ) & PackageState::Keep );
00079 }
00080
00081 Test packageState2() {
00082 assert( pkgs.get< package::State >( t ) & PackageState::Keep );
00083 }
00084
00085 Test exists() {
00086 assert( pkgs.exists( t ) );
00087 assert( !pkgs.exists( ept::Token( "nonexistent-package" ) ) );
00088 }
00089
00090 Test invalidate() {
00091 assert( pkgs.exists( t ) );
00092 db.invalidate();
00093 assert( pkgs.exists( t ) );
00094 }
00095 };