public void WriteManagedToJavaWithNoTypes() { var v = new TypeNameMapGenerator(new string[0], logger: Diagnostic.CreateConsoleLogger()); var o = new MemoryStream(); v.WriteManagedToJava(o); var a = ToArray(o); Assert.AreEqual(52, a.Length); }
public static void Run(CodeGeneratorOptions options) { if (options == null) { throw new ArgumentNullException("options"); } using (var resolver = new DirectoryAssemblyResolver(Diagnostic.CreateConsoleLogger(), loadDebugSymbols: false)) { Run(options, resolver); } }
public void WriteManagedToJava() { var types = SupportDeclarations.GetTestTypeDefinitions(); var v = new TypeNameMapGenerator(types, logger: Diagnostic.CreateConsoleLogger()); var o = new MemoryStream(); v.WriteManagedToJava(o); var a = ToArray(o); Save(a, "__m2j"); var length = 190; var offset = 114; var e = "version=1\u0000" + $"entry-count={types.Count}\u0000" + "entry-len=" + length + "\u0000" + "value-offset=" + offset + "\u0000" + GetM2JEntryLine(typeof(AbstractClass), "my/AbstractClass", offset, length) + GetM2JEntryLine(typeof(AbstractClassInvoker), "my/AbstractClass", offset, length) + GetM2JEntryLine(typeof(ActivityName), "activity/Name", offset, length) + GetM2JEntryLine(typeof(ApplicationName), "application/Name", offset, length) + GetM2JEntryLine(typeof(DefaultName.A.B), "crc64197ae30a36756915/DefaultName_A_B", offset, length) + GetM2JEntryLine(typeof(DefaultName.A), "crc64197ae30a36756915/DefaultName_A", offset, length) + GetM2JEntryLine(typeof(DefaultName.C.D), "crc64197ae30a36756915/DefaultName_C_D", offset, length) + GetM2JEntryLine(typeof(DefaultName), "crc64197ae30a36756915/DefaultName", offset, length) + GetM2JEntryLine(typeof(ExampleActivity), "my/ExampleActivity", offset, length) + GetM2JEntryLine(typeof(ExampleInstrumentation), "my/ExampleInstrumentation", offset, length) + GetM2JEntryLine(typeof(ExampleOuterClass.ExampleInnerClass), "crc64197ae30a36756915/ExampleOuterClass$ExampleOuterClass_ExampleInnerClass", offset, length) + GetM2JEntryLine(typeof(ExampleOuterClass), "crc64197ae30a36756915/ExampleOuterClass", offset, length) + GetM2JEntryLine(typeof(InstrumentationName), "instrumentation/Name", offset, length) + GetM2JEntryLine(typeof(NonStaticOuterClass.NonStaticInnerClass), "register/NonStaticOuterClass$NonStaticInnerClass", offset, length) + GetM2JEntryLine(typeof(NonStaticOuterClass), "register/NonStaticOuterClass", offset, length) + GetM2JEntryLine(typeof(ProviderName), "provider/Name", offset, length) + GetM2JEntryLine(typeof(ReceiverName), "receiver/Name", offset, length) + GetM2JEntryLine(typeof(RegisterName.DefaultNestedName), "register/Name_DefaultNestedName", offset, length) + GetM2JEntryLine(typeof(RegisterName.OverrideNestedName), "register/Name$Override", offset, length) + GetM2JEntryLine(typeof(RegisterName), "register/Name", offset, length) + GetM2JEntryLine(typeof(ServiceName), "service/Name", offset, length) + "\u0000"; var ex = Encoding.UTF8.GetBytes(e); Save(ex, "__m2j.ex"); CollectionAssert.AreEqual(ex, a); }
public static int Main(string [] args) { var resolver = new DirectoryAssemblyResolver(logger: Diagnostic.CreateConsoleLogger(), loadDebugSymbols: false); bool help = false; string outputPath = null; int verbosity = 0; var options = new OptionSet { "Usage: jcw-gen.exe OPTIONS* ASSEMBLY+", "", "Generates Java Callable Wrappers from specified assemblies.", "", "Copyright 2016 Xamarin Inc.", "", "Options:", { "L=", "{DIRECTORY} to resolve assemblies from.", v => resolver.SearchDirectories.Add(v) }, { "o=", "{DIRECTORY} to write Java source code to.", v => outputPath = v }, { "v:", "Logging verbosity.", (int?v) => verbosity = v.HasValue ? v.Value : verbosity + 1 }, { "h|help|?", "Show this message and exit", v => help = v != null }, }; var cache = new TypeDefinitionCache(); var scanner = new JavaTypeScanner(Diagnostic.CreateConsoleLogger(), cache); try { var assemblies = options.Parse(args); if (assemblies.Count == 0 || outputPath == null || help) { int r = 0; if (assemblies.Count == 0) { Console.Error.WriteLine("jcw-gen: No assemblies specified."); r = 1; } else if (outputPath == null) { Console.Error.WriteLine("jcw-gen: No output directory specified. Use `jcw-gen -o PATH`."); r = 1; } options.WriteOptionDescriptions(Console.Out); return(r); } foreach (var assembly in assemblies) { resolver.SearchDirectories.Add(Path.GetDirectoryName(assembly)); resolver.Load(assembly); } var types = scanner.GetJavaTypes(assemblies, resolver) .Where(td => !JavaTypeScanner.ShouldSkipJavaCallableWrapperGeneration(td, cache)); foreach (var type in types) { GenerateJavaCallableWrapper(type, outputPath, cache); } return(0); } catch (Exception e) { Console.Error.Write("jcw-gen: {0}", verbosity > 0 ? e.ToString() : e.Message); return(1); } finally { resolver.Dispose(); } }
public void WriteJavaToManaged() { var v = new TypeNameMapGenerator(SupportDeclarations.GetTestTypeDefinitions(), logger: Diagnostic.CreateConsoleLogger()); var o = new MemoryStream(); v.WriteJavaToManaged(o); var a = ToArray(o); Save(a, "__j2m"); var length = 259; var offset = 90; var e = "version=1\u0000" + "entry-count=18\u0000" + "entry-len=" + length + "\u0000" + "value-offset=" + offset + "\u0000" + GetJ2MEntryLine(typeof(ActivityName), "activity/Name", offset, length) + GetJ2MEntryLine(typeof(ApplicationName), "application/Name", offset, length) + GetJ2MEntryLine(typeof(InstrumentationName), "instrumentation/Name", offset, length) + GetJ2MEntryLine(typeof(DefaultName), "md5fef72cac46d04ae5bdc90af5bb6221ad/DefaultName", offset, length) + GetJ2MEntryLine(typeof(DefaultName.A), "md5fef72cac46d04ae5bdc90af5bb6221ad/DefaultName_A", offset, length) + GetJ2MEntryLine(typeof(DefaultName.A.B), "md5fef72cac46d04ae5bdc90af5bb6221ad/DefaultName_A_B", offset, length) + GetJ2MEntryLine(typeof(DefaultName.C.D), "md5fef72cac46d04ae5bdc90af5bb6221ad/DefaultName_C_D", offset, length) + GetJ2MEntryLine(typeof(ExampleOuterClass), "md5fef72cac46d04ae5bdc90af5bb6221ad/ExampleOuterClass", offset, length) + GetJ2MEntryLine(typeof(ExampleOuterClass.ExampleInnerClass), "md5fef72cac46d04ae5bdc90af5bb6221ad/ExampleOuterClass$ExampleOuterClass_ExampleInnerClass", offset, length) + GetJ2MEntryLine(typeof(AbstractClass), "my/AbstractClass", offset, length) + GetJ2MEntryLine(typeof(ProviderName), "provider/Name", offset, length) + GetJ2MEntryLine(typeof(ReceiverName), "receiver/Name", offset, length) + GetJ2MEntryLine(typeof(RegisterName), "register/Name", offset, length) + GetJ2MEntryLine(typeof(RegisterName.OverrideNestedName), "register/Name$Override", offset, length) + GetJ2MEntryLine(typeof(RegisterName.DefaultNestedName), "register/Name_DefaultNestedName", offset, length) + GetJ2MEntryLine(typeof(NonStaticOuterClass), "register/NonStaticOuterClass", offset, length) + GetJ2MEntryLine(typeof(NonStaticOuterClass.NonStaticInnerClass), "register/NonStaticOuterClass$NonStaticInnerClass", offset, length) + GetJ2MEntryLine(typeof(ServiceName), "service/Name", offset, length) + "\u0000"; var ex = Encoding.UTF8.GetBytes(e); Save(ex, "__j2m.ex"); CollectionAssert.AreEqual(ex, a); }