+ /**
+ * @covers Language::clearCaches
+ */
+ public function testClearCaches() {
+ $languageClass = TestingAccessWrapper::newFromClass( Language::class );
+
+ // Populate $dataCache
+ Language::getLocalisationCache()->getItem( 'zh', 'mainpage' );
+ $oldCacheObj = Language::$dataCache;
+ $this->assertNotCount( 0,
+ TestingAccessWrapper::newFromObject( Language::$dataCache )->loadedItems );
+
+ // Populate $mLangObjCache
+ $lang = Language::factory( 'en' );
+ $this->assertNotCount( 0, Language::$mLangObjCache );
+
+ // Populate $fallbackLanguageCache
+ Language::getFallbacksIncludingSiteLanguage( 'en' );
+ $this->assertNotCount( 0, $languageClass->fallbackLanguageCache );
+
+ // Populate $grammarTransformations
+ $lang->getGrammarTransformations();
+ $this->assertNotNull( $languageClass->grammarTransformations );
+
+ // Populate $languageNameCache
+ Language::fetchLanguageNames();
+ $this->assertNotNull( $languageClass->languageNameCache );
+
+ Language::clearCaches();
+
+ $this->assertNotSame( $oldCacheObj, Language::$dataCache );
+ $this->assertCount( 0,
+ TestingAccessWrapper::newFromObject( Language::$dataCache )->loadedItems );
+ $this->assertCount( 0, Language::$mLangObjCache );
+ $this->assertCount( 0, $languageClass->fallbackLanguageCache );
+ $this->assertNull( $languageClass->grammarTransformations );
+ $this->assertNull( $languageClass->languageNameCache );
+ }
+