📄 core/tests/CallGraphBuilderTests/MessageSource.cs
using System;
using System.IO;

namespace Cfa.Tests.CallGraphBuilderTests;

internal static class MessageSource
{
    public static MessageOptions Options =>
        MessageOptions.LoadJson(Path.Combine(AppContext.BaseDirectory, ".cfa.json"));

    public const string Contracts = """
        namespace Sample.Domain
        {
            public abstract class Message<TId> { }
        }
        namespace Sample.GrainInterfaces.Events
        {
            public interface IEventSender
            {
                void Publish<TId>(Sample.Domain.Message<TId> message);
            }
        }
        namespace Sample.GrainInterfaces.Commands
        {
            public interface ICommandSender { void Dispatch<T>(T command); }
        }
        namespace Sample.Grains.EventHandlers
        {
            public abstract class EventReceiver<T>
            {
                protected void On<TEvent>(System.Action<TEvent> handler) where TEvent : T { }
                protected void On<TEvent>(System.Func<TEvent, System.Threading.Tasks.Task> handler) where TEvent : T { }
            }
        }
        namespace Sample.Grains
        {
            public abstract class CommandReceiver<TAggregate, TId, TState>
            {
                protected void When<TCommand>(System.Action<TCommand, TAggregate> handler) { }
            }
        }
        public class Updated : Sample.Domain.Message<int> { }
        public class Other : Sample.Domain.Message<int> { }
        public class Change { }
        """;
}