Esempio n. 1
0
        public override object Transform(EngineIntrinsics engineIntrinsics, object inputData)
        {
            if (null == inputData)
            {
                return(inputData);
            }

            var inputObject = inputData.ToPSObject().BaseObject;

            if (!(inputObject is ScriptBlock))
            {
                return(inputData);
            }

            var script = inputObject as ScriptBlock;

            var dataSource = new PowerShellDataSource
            {
                Name        = script.ToString(),
                ScriptBlock = script.ToString(),
                Trigger     = new ImmediateTrigger()
            };

            //TODO: add datasource to datasources: drive
            var drive = engineIntrinsics.InvokeCommand.InvokeScript("get-psdrive datasources") as IDriveOf <IPowerShellDataSource>;

            drive.Add(dataSource);

            return(dataSource);
        }
        public override object Transform(EngineIntrinsics engineIntrinsics, object inputData)
        {
            if (null == inputData)
            {
                return inputData;
            }

            var inputObject = inputData.ToPSObject().BaseObject;

            if (!(inputObject is ScriptBlock))
            {
                return inputData;
            }

            var script = inputObject as ScriptBlock;

            var dataSource = new PowerShellDataSource
            {
                Name = script.ToString(),
                ScriptBlock = script.ToString(),
                Trigger = new ImmediateTrigger()
            };

            //TODO: add datasource to datasources: drive
            var drive = engineIntrinsics.InvokeCommand.InvokeScript("get-psdrive datasources") as IDriveOf<IPowerShellDataSource>;
            drive.Add(dataSource);

            return dataSource;
        }
Esempio n. 3
0
        public void SupportsNewItem()
        {
            var s = @"new-item datasources:/test1 -value { @(1,2,3,4) }";
            PowerShellDataSource item = Execute <PowerShellDataSource>(s);

            Assert.NotNull(item);
        }
Esempio n. 4
0
        public void AllRecordsCountPropertyChangeNotifiedByViewModel()
        {
            var vm     = new ViewModel();
            int called = 0;

            vm.PropertyChanged += (s, a) => { if (a.PropertyName == "AllRecordsCount")
                                              {
                                                  ++called;
                                              }
            };
            var dataSource = new PowerShellDataSource
            {
                ScriptBlock = "1 | select -exp ASDF"
            };

            vm.DataSource = dataSource;
            Assert.Equal(0, vm.AllRecordsCount);

            called = 0;
            vm.DataSource.Trigger = new ImmediateTrigger();
            dataSource.ScriptComplete.WaitOne();

            Assert.Equal(1, vm.AllRecordsCount);
            Assert.True(1 == called, "Failed to raise property notification change event for AllRecordsCount");
        }
Esempio n. 5
0
        public void DefaultTriggerForNewItemIsImmediate()
        {
            var s = @"new-item datasources:/test1 -value { @(1,2,3,4) }";
            PowerShellDataSource item = Execute <PowerShellDataSource>(s);

            Assert.NotNull(item);
            Assert.IsType <ImmediateTrigger>(item.Trigger);
        }
Esempio n. 6
0
        public void CanAssignTriggerByObject()
        {
            var s = @"$trigger = new-item triggers:/trigger0 -manual; new-item datasources:/test1 -trigger $trigger -value { get-random }";
            PowerShellDataSource item = Execute <PowerShellDataSource>(s);

            Assert.NotNull(item);
            Assert.NotNull(item.Trigger);
            Assert.Equal("trigger0", item.Trigger.Name);
            Assert.Equal(0, item.Data.Count);
            Assert.IsType <ManualTrigger>(item.Trigger);
        }
Esempio n. 7
0
        public void DataSourceExecutesScriptOnImmediateTriggerAttach()
        {
            PowerShellDataSource item = new PowerShellDataSource {
                Name = "Item", ScriptBlock = "@(0,1,2,3)"
            };

            Assert.NotNull(item);
            Assert.Equal(0, item.Data.Count);
            item.Trigger = new ImmediateTrigger();
            item.ScriptComplete.WaitOne(500);
            Assert.Equal(4, item.Data.Count);
        }
Esempio n. 8
0
        public void DataSourceExecutesScriptOnManualTriggerPull()
        {
            PowerShellDataSource item = new PowerShellDataSource {
                Name = "Item", ScriptBlock = "@(0,1,2,3)"
            };

            Assert.NotNull(item);
            Assert.Equal(0, item.Data.Count);
            var trigger = new ManualTrigger();

            item.Trigger = trigger;
            Assert.Equal(0, item.Data.Count);
            trigger.RaiseTrigger();
            item.ScriptComplete.WaitOne(500);
            Assert.Equal(4, item.Data.Count);
        }
        public void AllRecordsCountUpdatedInSingleDataSourceViewModel()
        {
            var vm = new ViewModel();
            var dataSource = new PowerShellDataSource
            {
                ScriptBlock = "1 | select -exp ASDF"
            };

            vm.DataSource = dataSource;
            Assert.Equal(0, vm.AllRecordsCount);
            Assert.Equal(dataSource.AllRecords.Count, vm.AllRecordsCount);

            vm.DataSource.Trigger = new ImmediateTrigger();
            dataSource.ScriptComplete.WaitOne();

            Assert.Equal(1, vm.AllRecordsCount);
            Assert.Equal(dataSource.AllRecords.Count, vm.AllRecordsCount);
        }
Esempio n. 10
0
        public void AllRecordsCountUpdatedInSingleDataSourceViewModel()
        {
            var vm         = new ViewModel();
            var dataSource = new PowerShellDataSource
            {
                ScriptBlock = "1 | select -exp ASDF"
            };

            vm.DataSource = dataSource;
            Assert.Equal(0, vm.AllRecordsCount);
            Assert.Equal(dataSource.AllRecords.Count, vm.AllRecordsCount);

            vm.DataSource.Trigger = new ImmediateTrigger();
            dataSource.ScriptComplete.WaitOne();

            Assert.Equal(1, vm.AllRecordsCount);
            Assert.Equal(dataSource.AllRecords.Count, vm.AllRecordsCount);
        }
        public void AllRecordsCountPropertyChangeNotifiedByViewModel()
        {
            var vm = new ViewModel();
            int called = 0;
            vm.PropertyChanged += (s, a) => { if (a.PropertyName == "AllRecordsCount") ++called;  };
            var dataSource = new PowerShellDataSource
                                {
                                    ScriptBlock = "1 | select -exp ASDF"
                                };

            vm.DataSource = dataSource;
            Assert.Equal(0, vm.AllRecordsCount);

            called = 0;
            vm.DataSource.Trigger = new ImmediateTrigger();
            dataSource.ScriptComplete.WaitOne();

            Assert.Equal(1, vm.AllRecordsCount);
            Assert.True( 1 == called, "Failed to raise property notification change event for AllRecordsCount");
        }
Esempio n. 12
0
        public IPathValue NewItem(IProviderContext context, string path, string itemTypeName, object newItemValue)
        {
            var parameters = context.DynamicParameters as DataSourceNewItemParameters;
            var name       = path;
            var script     = ConvertToScript(newItemValue);

            if (null == script)
            {
                throw new ArgumentException("new item value must be a script block or string", "newItemValue");
            }

            var dataSource = new PowerShellDataSource {
                Name = name, ScriptBlock = script, UseDispatcher = true
            };

            if (null != parameters)
            {
                if (parameters.MaxItemCount.HasValue)
                {
                    dataSource.DataCollectionMaxSize = parameters.MaxItemCount.Value;
                }

                if (parameters.NoDispatcher.IsPresent)
                {
                    dataSource.UseDispatcher = false;
                }


                if (null != parameters.Args)
                {
                    string propertyName = null;

                    var specs = parameters.Args.ToHashtable();

                    foreach (object key in specs.Keys)
                    {
                        var value = specs[key];
                        IScaleDescriptor descriptor = value as IScaleDescriptor;


                        if (null == descriptor)
                        {
                            if (value is Array)
                            {
                                descriptor = new ScaleDescriptor((object[])value);
                            }
                            else
                            {
                                descriptor = new ScaleDescriptor(value.ToString());
                            }
                        }

                        dataSource.Scales.Add(
                            new ScaleDescriptorAssignment
                        {
                            Scale        = descriptor,
                            PropertyName = key.ToString()
                        }
                            );
                    }
                }
            }

            ITrigger trigger = Singleton <ImmediateTrigger> .Instance;

            if (null != parameters && null != parameters.Trigger)
            {
                trigger = parameters.Trigger;
            }
            dataSource.Trigger = trigger;
            _drive.Add(dataSource);

            return(new PathValue(dataSource, name, true));
        }