internal IScriptBaseObject[] GetIteratorObjects(Type iteratorType, ProviderInfo provider) { if (CurrentRootObject == null) { return(provider.GetAllObjectsOfType(iteratorType.FullName).ToArray()); } if (iteratorType.IsInstanceOfType(CurrentRootObject)) { return(new[] { CurrentRootObject }); } return(provider.GetAllObjectsOfType(iteratorType.FullName, CurrentRootObject).ToArray()); }
private void SetupProvider(ProviderInfo providerMock) { ProviderInfo provider; Expect .Call(projectInfo.GetIteratorTypeFromProviders("Iterator", out provider)) .Return(typeof(IScriptBaseObject)).OutRef(providerMock) .Repeat.Any(); Expect.Call(projectInfo.GetIteratorTypeFromProviders("Iterator")) .Return(typeof(IScriptBaseObject)) .Repeat.Any(); Expect.Call(providerMock.GetAllObjectsOfType(null)) .IgnoreArguments() .Return(new System.Collections.Generic.List <IScriptBaseObject>()) .Repeat.Any(); }
/// <summary> /// Gets the object represented by this Argument from the ProviderInfo /// object provided. The ProviderInfo object given should be of the same /// type as the one that was used in the construction of this object, and /// the same project file should be loaded.</summary> /// <param name="providers">The list of ProviderInfos to search for the provider used to get the referenced object.</param> /// <returns>The object returned by provider.GetAllObjectsOfType(FullTypeName)[ObjectIndex]</returns> internal virtual object GetObject(IEnumerable <ProviderInfo> providers) { ProviderInfo provider = providers.FirstOrDefault(p => p.GetType().Assembly.FullName == FullProviderAssemblyName); if (provider == null) { log.ErrorFormat("Could not find the provider assembly {0} in the currently loaded providers", FullProviderAssemblyName); throw new Exception(string.Format("Could not find the provider assembly {0} in the currently loaded providers", FullProviderAssemblyName)); } IEnumerable <IScriptBaseObject> type = provider.GetAllObjectsOfType(FullTypeName); if (type.Count() <= ObjectIndex) { throw new Exception( string.Format("ObjectIndex was greater than the number of objects returned ({0} > {1} from GetAllObjectsOfType({2})", ObjectIndex, type.Count(), FullTypeName)); } return(type.ElementAt(ObjectIndex)); }