public void TestEmptyRegistry() { POIFSReaderRegistry registry = new POIFSReaderRegistry(); for (int i = 0; i < paths.Length; i++) { for (int j = 0; j < names.Length; j++) { IEnumerator listeners = registry.GetListeners(paths[i], names[j]); Assert.IsTrue(!listeners.MoveNext()); } } }
public void TestMixedRegistrationOperations() { POIFSReaderRegistry registry = new POIFSReaderRegistry(); for (int i = 0; i < listeners.Length; i++) { for (int j = 0; j < paths.Length; j++) { for (int k = 0; k < names.Length; k++) { if ((i != j) && (j != k)) { registry.RegisterListener(listeners[i], paths[j], names[k]); } } } } for (int k = 0; k < paths.Length; k++) { for (int n = 0; n < names.Length; n++) { IEnumerator listeners = registry.GetListeners(paths[k], names[n]); if (k == n) Assert.IsTrue(!listeners.MoveNext()); else { ArrayList registeredListeners = new ArrayList(); while (listeners.MoveNext()) { registeredListeners.Add(listeners.Current); } Assert.AreEqual(this.listeners.Length - 1, registeredListeners.Count); for (int j = 0; j < this.listeners.Length; j++) { if (j == k) Assert.IsTrue(!registeredListeners.Contains(this.listeners[j])); else Assert.IsTrue(registeredListeners.Contains(this.listeners[j])); } } } } for (int j = 0; j < listeners.Length; j++) registry.RegisterListener(listeners[j]); for (int k = 0; k < paths.Length; k++) { for (int n = 0; n < names.Length; n++) { IEnumerator listeners = registry.GetListeners(paths[k], names[n]); ArrayList registeredListeners = new ArrayList(); while (listeners.MoveNext()) { registeredListeners.Add(listeners.Current); } Assert.AreEqual(this.listeners.Length, registeredListeners.Count); for (int j = 0; j < this.listeners.Length; j++) { Assert.IsTrue(registeredListeners.Contains(this.listeners[j])); } } } }
/// <summary> /// Processes the properties. /// </summary> /// <param name="small_blocks">The small_blocks.</param> /// <param name="big_blocks">The big_blocks.</param> /// <param name="properties">The properties.</param> /// <param name="path">The path.</param> /// <returns></returns> private List <DocumentDescriptor> ProcessProperties(BlockList small_blocks, BlockList big_blocks, IEnumerator properties, POIFSDocumentPath path) { List <DocumentDescriptor> documents = new List <DocumentDescriptor>(); while (properties.MoveNext()) { Property property = (Property)properties.Current; String name = property.Name; if (property.IsDirectory) { POIFSDocumentPath new_path = new POIFSDocumentPath(path, new String[] { name }); ProcessProperties( small_blocks, big_blocks, ((DirectoryProperty)property).Children, new_path); } else { int startBlock = property.StartBlock; IEnumerator listeners = registry.GetListeners(path, name); OPOIFSDocument document = null; if (listeners.MoveNext()) { listeners.Reset(); int size = property.Size; if (property.ShouldUseSmallBlocks) { document = new OPOIFSDocument(name, small_blocks .FetchBlocks(startBlock, -1), size); } else { document = new OPOIFSDocument(name, big_blocks .FetchBlocks(startBlock, -1), size); } //POIFSReaderListener listener = // (POIFSReaderListener)listeners.Current; //listener.ProcessPOIFSReaderEvent( // new POIFSReaderEvent( // new DocumentInputStream(document), path, // name)); while (listeners.MoveNext()) { POIFSReaderListener listener = (POIFSReaderListener)listeners.Current; listener.ProcessPOIFSReaderEvent( new POIFSReaderEvent( new DocumentInputStream(document), path, name)); } } else { // consume the document's data and discard it if (property.ShouldUseSmallBlocks) { small_blocks.FetchBlocks(startBlock, -1); } else { big_blocks.FetchBlocks(startBlock, -1); } //documents.Add( // new DocumentDescriptor(path, name)); //fire event //OnStreamReaded(new POIFSReaderEventArgs(name, path, document)); } } } return(documents); }