libept
|
00001 // -*- C++ -*- 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 3778 ); 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 };