Best NBi code snippet using NBi.Core.ResultSet.Resolver.ObjectsResultSetResolver.Execute
LookupReplaceEngineTest.cs
Source:LookupReplaceEngineTest.cs
...16{17 public class LookupReplaceEngineTest18 {19 [Test]20 public void Execute_AllLookupFound_CorrectReplacement()21 {22 var candidate = new ObjectsResultSetResolver(23 new ObjectsResultSetResolverArgs(24 new[] {25 new object[] { 1, "A", 100 },26 new object[] { 2, "B", 101 },27 new object[] { 3, "A", 125 },28 new object[] { 4, "B", 155 }29 }30 )).Execute();31 var reference = new ResultSetService(32 new ObjectsResultSetResolver(33 new ObjectsResultSetResolverArgs(34 new[] {35 new object[] { "A", "alpha" },36 new object[] { "B", "beta" },37 }38 )).Execute, null);39 var engine = new LookupReplaceEngine(40 new LookupReplaceArgs( 41 reference, 42 new ColumnMapping(new ColumnOrdinalIdentifier(1), new ColumnOrdinalIdentifier(0), ColumnType.Text),43 new ColumnOrdinalIdentifier(1)44 ));45 var result = engine.Execute(candidate);46 Assert.That(result.Columns.Count, Is.EqualTo(3));47 Assert.That(result.Rows.Count, Is.EqualTo(4));48 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("alpha"));49 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("beta"));50 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1] as string).Where(x => x != "alpha" && x != "beta"), Is.Empty); 51 }52 [Test]53 public void Execute_AllLookupFoundSwitchingFromTextToNumeric_CorrectReplacement()54 {55 var candidate = new ObjectsResultSetResolver(56 new ObjectsResultSetResolverArgs(57 new[] {58 new object[] { 1, "A", 100 },59 new object[] { 2, "B", 101 },60 new object[] { 3, "A", 125 },61 new object[] { 4, "B", 155 }62 }63 )).Execute();64 var reference = new ResultSetService(65 new ObjectsResultSetResolver(66 new ObjectsResultSetResolverArgs(67 new[] {68 new object[] { "A", 10.2 },69 new object[] { "B", 21.1 },70 }71 )).Execute, null);72 var engine = new LookupReplaceEngine(73 new LookupReplaceArgs(74 reference,75 new ColumnMapping(new ColumnOrdinalIdentifier(1), new ColumnOrdinalIdentifier(0), ColumnType.Text),76 new ColumnOrdinalIdentifier(1)77 ));78 var result = engine.Execute(candidate);79 Assert.That(result.Columns.Count, Is.EqualTo(3));80 Assert.That(result.Rows.Count, Is.EqualTo(4));81 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain(10.2));82 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain(21.1));83 Assert.That(result.Rows.Cast<DataRow>().Select(x => Convert.ToDecimal(x[1])).Where(x => x != 10.2m && x != 21.1m), Is.Empty);84 }85 [Test]86 public void ExecuteWithFailureStretegy_OneLookupMissing_ExceptionThrown()87 {88 var candidate = new ObjectsResultSetResolver(89 new ObjectsResultSetResolverArgs(90 new[] {91 new object[] { 1, "A", 100 },92 new object[] { 2, "B", 101 },93 new object[] { 3, "A", 125 },94 new object[] { 4, "C", 155 }95 }96 )).Execute();97 var reference = new ResultSetService(98 new ObjectsResultSetResolver(99 new ObjectsResultSetResolverArgs(100 new[] {101 new object[] { "A", "alpha" },102 new object[] { "B", "beta" },103 }104 )).Execute, null);105 var engine = new LookupReplaceEngine(106 new LookupReplaceArgs(107 reference,108 new ColumnMapping(new ColumnOrdinalIdentifier(1), new ColumnOrdinalIdentifier(0), ColumnType.Text),109 new ColumnOrdinalIdentifier(1),110 new FailureMissingStrategy()111 ));112 var ex = Assert.Throws<NBiException>(() => engine.Execute(candidate));113 Assert.That(ex.Message, Does.Contain("'C'"));114 }115 [Test]116 public void ExecuteWithDefaultValueStrategy_OneLookupMissing_DefaultValueApplied()117 {118 var candidate = new ObjectsResultSetResolver(119 new ObjectsResultSetResolverArgs(120 new[] {121 new object[] { 1, "A", 100 },122 new object[] { 2, "B", 101 },123 new object[] { 3, "A", 125 },124 new object[] { 4, "C", 155 }125 }126 )).Execute();127 var reference = new ResultSetService(128 new ObjectsResultSetResolver(129 new ObjectsResultSetResolverArgs(130 new[] {131 new object[] { "A", "alpha" },132 new object[] { "B", "beta" },133 }134 )).Execute, null);135 var engine = new LookupReplaceEngine(136 new LookupReplaceArgs(137 reference,138 new ColumnMapping(new ColumnOrdinalIdentifier(1), new ColumnOrdinalIdentifier(0), ColumnType.Text),139 new ColumnOrdinalIdentifier(1),140 new DefaultValueMissingStrategy("omega")141 ));142 var result = engine.Execute(candidate);143 Assert.That(result.Rows.Count, Is.EqualTo(4));144 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("alpha"));145 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("beta"));146 var otherValues = result.Rows.Cast<DataRow>().Select(x => x[1] as string).Where(x => x != "alpha" && x != "beta");147 Assert.That(otherValues, Is.Not.Empty);148 Assert.That(otherValues, Does.Contain("omega"));149 }150 [Test]151 public void ExecuteWithOriginalValueStrategy_OneLookupMissing_OriginalValueApplied()152 {153 var candidate = new ObjectsResultSetResolver(154 new ObjectsResultSetResolverArgs(155 new[] {156 new object[] { 1, "A", 100 },157 new object[] { 2, "B", 101 },158 new object[] { 3, "A", 125 },159 new object[] { 4, "C", 155 }160 }161 )).Execute();162 var reference = new ResultSetService(163 new ObjectsResultSetResolver(164 new ObjectsResultSetResolverArgs(165 new[] {166 new object[] { "A", "alpha" },167 new object[] { "B", "beta" },168 }169 )).Execute, null);170 var engine = new LookupReplaceEngine(171 new LookupReplaceArgs(172 reference,173 new ColumnMapping(new ColumnOrdinalIdentifier(1), new ColumnOrdinalIdentifier(0), ColumnType.Text),174 new ColumnOrdinalIdentifier(1),175 new OriginalValueMissingStrategy()176 ));177 var result = engine.Execute(candidate);178 Assert.That(result.Rows.Count, Is.EqualTo(4));179 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("alpha"));180 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("beta"));181 var otherValues = result.Rows.Cast<DataRow>().Select(x => x[1] as string).Where(x => x != "alpha" && x != "beta");182 Assert.That(otherValues, Is.Not.Empty);183 Assert.That(otherValues, Does.Contain("C"));184 }185 [Test]186 public void ExecuteWithDiscardRowStrategy_OneLookupMissing_LessRowsReturned()187 {188 var candidate = new ObjectsResultSetResolver(189 new ObjectsResultSetResolverArgs(190 new[] {191 new object[] { 1, "A", 100 },192 new object[] { 2, "B", 101 },193 new object[] { 3, "A", 125 },194 new object[] { 4, "C", 155 }195 }196 )).Execute();197 var reference = new ResultSetService(198 new ObjectsResultSetResolver(199 new ObjectsResultSetResolverArgs(200 new[] {201 new object[] { "A", "alpha" },202 new object[] { "B", "beta" },203 }204 )).Execute, null);205 var engine = new LookupReplaceEngine(206 new LookupReplaceArgs(207 reference,208 new ColumnMapping(new ColumnOrdinalIdentifier(1), new ColumnOrdinalIdentifier(0), ColumnType.Text),209 new ColumnOrdinalIdentifier(1),210 new DiscardRowMissingStrategy()211 ));212 var result = engine.Execute(candidate);213 Assert.That(result.Rows.Count, Is.EqualTo(3));214 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("alpha"));215 Assert.That(result.Rows.Cast<DataRow>().Select(x => x[1]).Distinct(), Does.Contain("beta"));216 var otherValues = result.Rows.Cast<DataRow>().Select(x => x[1] as string).Where(x => x != "alpha" && x != "beta");217 Assert.That(otherValues, Is.Empty);218 }219 }220}...
NCalcExtendEngineTest.cs
Source:NCalcExtendEngineTest.cs
...17{18 public class NCalcExtendEngineTest19 {20 [Test]21 public void Execute_StandardRsColumnOrdinal_CorrectExtension()22 {23 var args = new ObjectsResultSetResolverArgs(new[] { new object[] { "Alpha", 1, 2 }, new object[] { "Beta", 3, 2 }, new object[] { "Gamma", 5, 7 } });24 var resolver = new ObjectsResultSetResolver(args);25 var rs = resolver.Execute();26 var extender = new NCalcExtendEngine(27 new ServiceLocator(),28 new Context(null),29 new ColumnOrdinalIdentifier(3),30 "[#1] * [#2]"31 );32 var newRs = extender.Execute(rs);33 Assert.That(newRs.Columns.Count, Is.EqualTo(4));34 Assert.That(newRs.Rows[0][3], Is.EqualTo(2));35 Assert.That(newRs.Rows[1][3], Is.EqualTo(6));36 Assert.That(newRs.Rows[2][3], Is.EqualTo(35));37 }38 [Test]39 public void Execute_StandardRsColumnName_CorrectExtension()40 {41 var args = new ObjectsResultSetResolverArgs(new[] { new object[] { "Alpha", 1, 2 }, new object[] { "Beta", 3, 2 }, new object[] { "Gamma", 5, 7 } });42 var resolver = new ObjectsResultSetResolver(args);43 var rs = resolver.Execute();44 rs.Columns[0].ColumnName = "a";45 rs.Columns[1].ColumnName = "b";46 rs.Columns[2].ColumnName = "c";47 var extender = new NCalcExtendEngine(48 new ServiceLocator(),49 new Context(null),50 new ColumnNameIdentifier("d"),51 "[b] * [c]"52 );53 var newRs = extender.Execute(rs);54 Assert.That(newRs.Columns.Count, Is.EqualTo(4));55 Assert.That(newRs.Columns[3].ColumnName, Is.EqualTo("d"));56 Assert.That(newRs.Rows[0][3], Is.EqualTo(2));57 Assert.That(newRs.Rows[1][3], Is.EqualTo(6));58 Assert.That(newRs.Rows[2][3], Is.EqualTo(35));59 }60 [Test]61 public void Execute_StandardRsColumnNameAndVariable_CorrectExtension()62 {63 var args = new ObjectsResultSetResolverArgs(new[] { new object[] { "Alpha", 1, 2 }, new object[] { "Beta", 3, 2 }, new object[] { "Gamma", 5, 7 } });64 var resolver = new ObjectsResultSetResolver(args);65 var rs = resolver.Execute();66 rs.Columns[0].ColumnName = "a";67 rs.Columns[1].ColumnName = "b";68 rs.Columns[2].ColumnName = "c";69 var extender = new NCalcExtendEngine(70 new ServiceLocator(),71 new Context(new Dictionary<string, IVariable> { { "myVar", new GlobalVariable(new LiteralScalarResolver<decimal>(2)) } }),72 new ColumnNameIdentifier("d"),73 "[@myVar] * [b] * [c]"74 );75 var newRs = extender.Execute(rs);76 Assert.That(newRs.Columns.Count, Is.EqualTo(4));77 Assert.That(newRs.Columns[3].ColumnName, Is.EqualTo("d"));78 Assert.That(newRs.Rows[0][3], Is.EqualTo(4));79 Assert.That(newRs.Rows[1][3], Is.EqualTo(12));80 Assert.That(newRs.Rows[2][3], Is.EqualTo(70));81 }82 [Test]83 [TestCase(1000)]84 [TestCase(10000)]85 [Retry(3)]86 public void Execute_ManyTimes_Performances(int count)87 {88 var rows = new List<object[]>();89 for (int i = 0; i < count; i++)90 rows.Add(new object[] { i, i + 1 });91 var args = new ObjectsResultSetResolverArgs(rows.ToArray());92 var resolver = new ObjectsResultSetResolver(args);93 var rs = resolver.Execute();94 rs.Columns[0].ColumnName = "a";95 rs.Columns[1].ColumnName = "b";96 var stopWatch = new Stopwatch();97 stopWatch.Start();98 var extender = new NCalcExtendEngine(99 new ServiceLocator(),100 new Context(null),101 new ColumnNameIdentifier("c"),102 "[b] - [a] + Max(a,b) - Sin(a)"103 );104 var newRs = extender.Execute(rs);105 stopWatch.Stop();106 Assert.That(stopWatch.ElapsedMilliseconds, Is.LessThanOrEqualTo(5000));107 }108 }109}...
NewNameRenamingEngineTest.cs
Source:NewNameRenamingEngineTest.cs
...15{16 public class NewNameRenamingEngineTest17 {18 [Test]19 public void Execute_ExistingColumnByOrdinal_ColumnRenamed()20 {21 var args = new ObjectsResultSetResolverArgs(new[] { new[] { "100,12", "Alpha" }, new[] { "100", "Beta" }, new[] { "0,1", "Gamma" } });22 var resolver = new ObjectsResultSetResolver(args);23 var rs = resolver.Execute();24 var renamer = new NewNameRenamingEngine(25 new ColumnOrdinalIdentifier(1),26 new LiteralScalarResolver<string>("myNewName")27 );28 var newRs = renamer.Execute(rs);29 Assert.That(newRs.Columns[1].ColumnName, Is.EqualTo("myNewName"));30 }31 [Test]32 public void Execute_ExistingColumnByName_ColumnRenamed()33 {34 var args = new ObjectsResultSetResolverArgs(new[] { new[] { "100,12", "Alpha" }, new[] { "100", "Beta" }, new[] { "0,1", "Gamma" } });35 var resolver = new ObjectsResultSetResolver(args);36 var rs = resolver.Execute();37 rs.Columns[1].ColumnName = "myOldName";38 var renamer = new NewNameRenamingEngine(39 new ColumnNameIdentifier("myOldName"),40 new LiteralScalarResolver<string>("myNewName")41 );42 var newRs = renamer.Execute(rs);43 Assert.That(newRs.Columns[1].ColumnName, Is.EqualTo("myNewName"));44 Assert.That(newRs.Columns.Cast<DataColumn>().Any(c => c.ColumnName == "myOldName"), Is.False);45 }46 [Test]47 public void Execute_NotExistingColumnFailureStrategy_IgnoreIssue()48 {49 var args = new ObjectsResultSetResolverArgs(new[] { new[] { "100,12", "Alpha" }, new[] { "100", "Beta" }, new[] { "0,1", "Gamma" } });50 var resolver = new ObjectsResultSetResolver(args);51 var rs = resolver.Execute();52 var renamer = new NewNameRenamingEngine(53 new ColumnNameIdentifier("unexistingColumn"),54 new LiteralScalarResolver<string>("myNewName")55 );56 Assert.Throws<NBiException>( () => renamer.Execute(rs));57 }58 [Test]59 public void Execute_NotExistingColumnSkipStrategy_IgnoreIssue()60 {61 var args = new ObjectsResultSetResolverArgs(new[] { new[] { "100,12", "Alpha" }, new[] { "100", "Beta" }, new[] { "0,1", "Gamma" } });62 var resolver = new ObjectsResultSetResolver(args);63 var rs = resolver.Execute();64 var renamer = new NewNameRenamingEngine(65 new ColumnNameIdentifier("unexistingColumn"),66 new LiteralScalarResolver<string>("myNewName"),67 new SkipAlterationStrategy()68 );69 var newRs = renamer.Execute(rs);70 Assert.That(newRs.Columns.Cast<DataColumn>().Any(c => c.ColumnName == "unexistingColumn"), Is.False);71 }72 }73}...
Execute
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using NBi.Core.ResultSet;7using NBi.Core.ResultSet.Resolver;8using NBi.Core.ResultSet.Resolver.Objects;9{10 {11 static void Main(string[] args)12 {13 List<object> list = new List<object>();14 list.Add(1);15 list.Add("2");16 list.Add(3);17 list.Add("4");18 list.Add(5);19 list.Add("6");20 List<IColumnDefinition> columns = new List<IColumnDefinition>();21 columns.Add(new ColumnOrdinalIdentifier(0));22 columns.Add(new ColumnOrdinalIdentifier(1));23 ObjectsResultSetResolver resolver = new ObjectsResultSetResolver(list, columns);24 var result = resolver.Execute();25 foreach (var row in result)26 {27 foreach (var cell in row)28 {29 Console.WriteLine(cell);30 }31 }32 }33 }34}
Execute
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using NBi.Core.ResultSet;6using NBi.Core.ResultSet.Resolver;7using NBi.Core.ResultSet.Resolver.Objects;8using NBi.Core.ResultSet.Comparer;9{10 {11 static void Main(string[] args)12 {13 List<Person> personList = new List<Person>();14 personList.Add(new Person { Id = 1, Name = "John", Age = 10 });15 personList.Add(new Person { Id = 2, Name = "Mary", Age = 20 });16 personList.Add(new Person { Id = 3, Name = "Peter", Age = 30 });17 List<Person> personList2 = new List<Person>();18 personList2.Add(new Person { Id = 1, Name = "John", Age = 10 });19 personList2.Add(new Person { Id = 2, Name = "Mary", Age = 20 });20 personList2.Add(new Person { Id = 3, Name = "Peter", Age = 30 });21 List<Person> personList3 = new List<Person>();22 personList3.Add(new Person { Id = 1, Name = "John", Age = 10 });23 personList3.Add(new Person { Id = 2, Name = "Mary", Age = 20 });24 personList3.Add(new Person { Id = 3, Name = "Peter", Age = 30 });25 List<Person> personList4 = new List<Person>();26 personList4.Add(new Person { Id = 1, Name = "John", Age = 10 });27 personList4.Add(new Person { Id = 2, Name = "Mary", Age = 20 });28 personList4.Add(new Person { Id = 3, Name = "Peter", Age = 30 });29 List<Person> personList5 = new List<Person>();30 personList5.Add(new Person { Id = 1, Name = "John", Age = 10
Execute
Using AI Code Generation
1using System;2using System.Collections.Generic;3using System.Linq;4using System.Text;5using System.Threading.Tasks;6using NBi.Core.ResultSet;7using NBi.Core.ResultSet.Resolver;8using NBi.Core.Query;9using NBi.Core.Query.Resolver;10using NBi.Core.Query.Command;11using NBi.Core.Query.Client;12using NBi.Core.Query.Client.SqlClient;13using NBi.Core.Query.Client.Odbc;14using NBi.Core.Query.Client.OleDb;15using NBi.Core.Query.Client.Oracle;16using NBi.Core.Query.Client.MySql;17using NBi.Core.Query.Client.Presto;18using NBi.Core.Query.Client.SQLite;19using NBi.Core.Query.Client.SapHana;20using NBi.Core.Query.Client.CData;21using NBi.Core.Query.Execution;22using NBi.Core.Query.Execution.Odbc;23using NBi.Core.Query.Execution.OleDb;24using NBi.Core.Query.Execution.SqlServer;25using NBi.Core.Query.Execution.Oracle;26using NBi.Core.Query.Execution.MySql;27using NBi.Core.Query.Execution.Presto;28using NBi.Core.Query.Execution.SQLite;29using NBi.Core.Query.Execution.SapHana;30using NBi.Core.Query.Execution.CData;31using NBi.Core.Calculation;32using NBi.Core.Calculation.Predicate;33using NBi.Core.Calculation.Predicate.Numeric;34using NBi.Core.Calculation.Predicate.Text;35using NBi.Core.Calculation.Ranking;36using NBi.Core.Calculation.Ranking.Percentile;37using NBi.Core.Calculation.Ranking.Position;38using NBi.Core.Calculation.Ranking.TopBottom;39using NBi.Core.Calculation.Ranking.Window;40using NBi.Core.Calculation.Ranking.Window.Ntb;41using NBi.Core.Calculation.Ranking.Window.Ntb.NtbOver;42using NBi.Core.Calculation.Ranking.Window.Ntb.NtbOver.NtbOverTie;43using NBi.Core.Calculation.Ranking.Window.Ntb.NtbOver.NtbOverTie.NtbOverTiePosition;44using NBi.Core.Calculation.Ranking.Window.Ntb.NtbOver.NtbOverTie.NtbOverTiePosition.NtbOverTiePositionTie;45using NBi.Core.Calculation.Ranking.Window.Ntb.NtbOver.NtbOverTie.NtbOverTiePosition.NtbOverTiePositionTie.NtbOverTiePositionTiePosition;
Execute
Using AI Code Generation
1using NBi.Core.ResultSet.Resolver;2using NBi.Core.ResultSet;3using System.Collections.Generic;4using System.Data;5using System.IO;6using System.Linq;7using System.Text;8using System.Threading.Tasks;9using System;10using NBi.Core.Scalar.Resolver;11using NBi.Core.Query;12using NBi.Core.Query.Resolver;13using NBi.Core.Query.Command;14{15 {16 static void Main(string[] args)17 {18 var resolver = new ObjectsResultSetResolver();19 resolver.Load(new string[] { "1", "2", "3", "4", "5" });20 var result = resolver.Execute();21 Console.WriteLine(result.Rows.Count);22 Console.ReadLine();23 }24 }25}
Execute
Using AI Code Generation
1var sqlQuery = new NBi.Core.Query.SqlQuery("select * from table1");2var resolver = new NBi.Core.ResultSet.Resolver.ObjectsResultSetResolver(sqlQuery);3var result = resolver.Execute();4var csvFile = new NBi.Core.Csv.CsvDocument("file.csv");5var resolver = new NBi.Core.ResultSet.Resolver.CsvResultSetResolver(csvFile);6var result = resolver.Execute();7var xmlFile = new NBi.Core.Xml.XmlDocument("file.xml");8var resolver = new NBi.Core.ResultSet.Resolver.XmlResultSetResolver(xmlFile);9var result = resolver.Execute();10var xmlFile = new NBi.Core.Xml.XmlDocument("file.xml");11var resolver = new NBi.Core.ResultSet.Resolver.XmlResultSetResolver(xmlFile);12var result = resolver.Execute();13var xmlFile = new NBi.Core.Xml.XmlDocument("file.xml");14var resolver = new NBi.Core.ResultSet.Resolver.XmlResultSetResolver(xmlFile);15var result = resolver.Execute();16var xmlFile = new NBi.Core.Xml.XmlDocument("file.xml");17var resolver = new NBi.Core.ResultSet.Resolver.XmlResultSetResolver(xmlFile);18var result = resolver.Execute();19var xmlFile = new NBi.Core.Xml.XmlDocument("file.xml");20var resolver = new NBi.Core.ResultSet.Resolver.XmlResultSetResolver(xmlFile);21var result = resolver.Execute();
Execute
Using AI Code Generation
1var query = new Query()2{3};4var result = new ObjectsResultSetResolver(query, new SettingsResultSetResolver());5Assert.That(result.Execute(), Is.Empty);6var query = new Query()7{8};9var result = new ObjectsResultSetResolver(query, new SettingsResultSetResolver());10Assert.That(result.Execute(), Is.Not.Empty);11var query = new Query()12{13};14var result = new ObjectsResultSetResolver(query, new Setti
Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.
You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.
Get 100 minutes of automation test minutes FREE!!