@ -67,14 +67,68 @@ class UpdaterTest extends \Test\TestCase { 
		
	
		
			
					 */ 	 */  
		
	
		
			
					public  function  versionCompatibilityTestData ()  { 	public  function  versionCompatibilityTestData ()  {  
		
	
		
			
						return  [ 		return  [  
		
	
		
			
							[ '1.0.0.0' ,  '2.2.0' ,  true ],  
		
	
		
			
							[ '1.1.1.1' ,  '2.0.0' ,  true ],  
		
	
		
			
							[ '5.0.3' ,  '4.0.3' ,  false ],  
		
	
		
			
							[ '12.0.3' ,  '13.4.5' ,  true ],  
		
	
		
			
							[ '1' ,  '2' ,  true ],  
		
	
		
			
							[ '2' ,  '2' ,  true ],  
		
	
		
			
							[ '6.0.5' ,  '6.0.6' ,  true ],  
		
	
		
			
							[ '5.0.6' ,  '7.0.4' ,  false ],  
		
	
		
			
							[ '1' ,  '2' ,  '1' ,  true ],  
		
	
		
			
							[ '2' ,  '2' ,  '2' ,  true ],  
		
	
		
			
							[ '6.0.5.0' ,  '6.0.6.0' ,  '5.0' ,  true ],  
		
	
		
			
							[ '5.0.6.0' ,  '7.0.4.0' ,  '6.0' ,  false ],  
		
	
		
			
							// allow upgrading within the same major release
  
		
	
		
			
							[ '8.0.0.0' ,  '8.0.0.0' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.0.0.4' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.0.1.0' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.0.2.0' ,  '8.0' ,  true ],  
		
	
		
			
							// does not allow downgrading within the same major release
  
		
	
		
			
							[ '8.0.1.0' ,  '8.0.0.0' ,  '8.0' ,  false ],  
		
	
		
			
							[ '8.0.2.0' ,  '8.0.1.0' ,  '8.0' ,  false ],  
		
	
		
			
							[ '8.0.0.4' ,  '8.0.0.0' ,  '8.0' ,  false ],  
		
	
		
			
							// allows upgrading within the patch version
  
		
	
		
			
							[ '8.0.0.0' ,  '8.0.0.1' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.0.0.2' ,  '8.0' ,  true ],  
		
	
		
			
							// does not allow downgrading within the same major release
  
		
	
		
			
							[ '8.0.0.1' ,  '8.0.0.0' ,  '8.0' ,  false ],  
		
	
		
			
							[ '8.0.0.2' ,  '8.0.0.0' ,  '8.0' ,  false ],  
		
	
		
			
							// allow upgrading to the next major release
  
		
	
		
			
							[ '8.0.0.0' ,  '8.1.0.0' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.1.1.0' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.1.1.5' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.0.0.2' ,  '8.1.1.5' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.1.0.0' ,  '8.2.0.0' ,  '8.1' ,  true ],  
		
	
		
			
							[ '8.1.0.2' ,  '8.2.0.4' ,  '8.1' ,  true ],  
		
	
		
			
							[ '8.1.0.5' ,  '8.2.0.1' ,  '8.1' ,  true ],  
		
	
		
			
							[ '8.1.0.0' ,  '8.2.1.0' ,  '8.1' ,  true ],  
		
	
		
			
							[ '8.1.0.2' ,  '8.2.1.5' ,  '8.1' ,  true ],  
		
	
		
			
							[ '8.1.0.5' ,  '8.2.1.1' ,  '8.1' ,  true ],  
		
	
		
			
							// does not allow downgrading to the previous major release
  
		
	
		
			
							[ '8.1.0.0' ,  '8.0.0.0' ,  '7.0' ,  false ],  
		
	
		
			
							[ '8.1.1.0' ,  '8.0.0.0' ,  '7.0' ,  false ],  
		
	
		
			
							// does not allow skipping major releases
  
		
	
		
			
							[ '8.0.0.0' ,  '8.2.0.0' ,  '8.1' ,  false ],  
		
	
		
			
							[ '8.0.0.0' ,  '8.2.1.0' ,  '8.1' ,  false ],  
		
	
		
			
							[ '8.0.0.0' ,  '9.0.1.0' ,  '8.2' ,  false ],  
		
	
		
			
							[ '8.0.0.0' ,  '10.0.0.0' ,  '9.3' ,  false ],  
		
	
		
			
							// allows updating to the next major release
  
		
	
		
			
							[ '8.2.0.0' ,  '9.0.0.0' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.0.0' ,  '9.0.0.0' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.0.0' ,  '9.0.1.0' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.0.0' ,  '9.0.1.1' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.0.2' ,  '9.0.1.1' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.2.0' ,  '9.0.1.0' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.2.2' ,  '9.0.1.1' ,  '8.2' ,  true ],  
		
	
		
			
							[ '9.0.0.0' ,  '9.1.0.0' ,  '9.0' ,  true ],  
		
	
		
			
							[ '9.0.0.0' ,  '9.1.0.2' ,  '9.0' ,  true ],  
		
	
		
			
							[ '9.0.0.2' ,  '9.1.0.1' ,  '9.0' ,  true ],  
		
	
		
			
							[ '9.1.0.0' ,  '9.2.0.0' ,  '9.1' ,  true ],  
		
	
		
			
							[ '9.2.0.0' ,  '9.3.0.0' ,  '9.2' ,  true ],  
		
	
		
			
							[ '9.3.0.0' ,  '10.0.0.0' ,  '9.3' ,  true ],  
		
	
		
			
							// does not allow updating to the next major release (first number)
  
		
	
		
			
							[ '9.0.0.0' ,  '8.2.0.0' ,  '8.1' ,  false ],  
		
	
		
			
							// other cases
  
		
	
		
			
							[ '8.0.0.0' ,  '8.1.5.0' ,  '8.0' ,  true ],  
		
	
		
			
							[ '8.2.0.0' ,  '9.0.0.0' ,  '8.2' ,  true ],  
		
	
		
			
							[ '8.2.0.0' ,  '9.1.0.0' ,  '9.0' ,  false ],  
		
	
		
			
							[ '9.0.0.0' ,  '8.1.0.0' ,  '8.0' ,  false ],  
		
	
		
			
							[ '9.0.0.0' ,  '8.0.0.0' ,  '7.0' ,  false ],  
		
	
		
			
							[ '9.1.0.0' ,  '8.0.0.0' ,  '7.0' ,  false ],  
		
	
		
			
							[ '8.2.0.0' ,  '8.1.0.0' ,  '8.0' ,  false ],  
		
	
		
			
						]; 		];  
		
	
		
			
					} 	}  
		
	
		
			
				
 
		
	
	
		
			
				
					
						
							 
					
					
						
							 
					
					
				 
				@ -106,9 +160,9 @@ class UpdaterTest extends \Test\TestCase { 
		
	
		
			
					 *  @ param  string  $newVersion 	 *  @ param  string  $newVersion  
		
	
		
			
					 *  @ param  bool  $result 	 *  @ param  bool  $result  
		
	
		
			
					 */ 	 */  
		
	
		
			
					public  function  testIsUpgradePossible ( $oldVersion ,  $newVersion ,  $result )  {  
		
	
		
			
					public  function  testIsUpgradePossible ( $oldVersion ,  $newVersion ,  $allowedVersion ,  $ result )  {  
		
	
		
			
						$updater  =  new  Updater ( $this -> httpHelper ,  $this -> config ); 		$updater  =  new  Updater ( $this -> httpHelper ,  $this -> config );  
		
	
		
			
						$this -> assertSame ( $result ,  $updater -> isUpgradePossible ( $oldVersion ,  $newVersion ));  
		
	
		
			
						$this -> assertSame ( $result ,  $updater -> isUpgradePossible ( $oldVersion ,  $newVersion ,  $allowedVersion ));  
		
	
		
			
					} 	}  
		
	
		
			
				
 
		
	
		
			
					public  function  testCheckInCache ()  { 	public  function  testCheckInCache ()  {